Autor Zpráva
KaNo
Profil *
Zdravím,
pustil jsem se do tvorby klasického webu, kde pomocí iframe chci nahoře jednu lištu s hlavním menu (výška 100px, šířka 100%) a pod tím vlevo pomocí dalšího iframe lištu s podružným menu (šířka 150px, výška dle velikosti okna-výška hlavního menu [100px]).
Zkusil jsem totiž udělat výšku levého iframe 100% a on mi sahá až pod aktuální okno - je to 100% celého okna a vůbec neuvažuje s tím, že je už o 100px níž kvůli hlavnímu menu.
Proto jsem použil funkci na zjištění velikosti okna a do iframe jsem se pokoušel dostat číslo vypočítané z JS funkce. Marně. Ať vyzkouším in-line zápis typu javascript:vyska(), nebo ať to celé schovám do <script> a vypíšu pomocí document.write, ignoruje mě to.
Pomohl by mi s tím prosím někdo?
Díky moc
KaNo

můj kód je:


<html>

<head>
<meta http-equiv="Content-Language" content="cs">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title></title>

<script type="text/javascript">
// <![CDATA[
function winH() {
if (window.innerHeight) return window.innerHeight;
else if (document.documentElement && document.documentElement.clientHeight)
return document.documentElement.clientHeight;
else if (document.body && document.body.clientHeight)
return document.body.clientHeight;
else return null;
}
// ]]>
</script>
</head>

<body>
<iframe src="html/obsah00.htm" width="100%" height="100" frameborder=0 marginheight=0 harginwidth=0 target="levy" name="vrchni" border="0"></iframe>
<iframe src="html/obsah10.htm" width="150" height="javascript:winH()-110;" frameborder=1 marginheight=0 harginwidth=0 target="_parent" name="levy" border="0"></iframe>

<div style="position: absolute; top: 120px; left: 160px">
tady bude úvodní stránka

</div>

</body>
</html>

venca12
Profil
Člověče mám pro tebe dvě rady. Můžeš si vybrat.

1. Vy*** se na tohle harakiri s iframem.

2. Ten zápis viz výše ti nebude fungovat. Na tomhle místě nemá javascript co dělat. Takže to můžeš udělat třeba takto: Do druhého iframe přidej nějaké id. Já jsem zvolil id="levyIframe". Potom do horního skriptu přidej na událost window.onload funkci, které ti ten iframe resizne, podle tvých potřeb. Funkce winH() vrací celou výšku okna, takže od ní musíš něco odečíst, proto je tam ta hodnota -120, tu jsem tam nastavil náhodně, takže si to už musíš doladit podle svých potřeb.
<html>

<head>

<meta http-equiv="Content-Language" content="cs">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">

<title></title>
<script type="text/javascript">

// <![CDATA[

function winH() {

if (window.innerHeight) return window.innerHeight;

else if (document.documentElement && document.documentElement.clientHeight)

return document.documentElement.clientHeight;

else if (document.body && document.body.clientHeight)

return document.body.clientHeight;

else return null;

}

window.onload = function()
{
document.getElementById('levyIframe').height=winH() - 120;
}

// ]]>

</script>

</head>
<body>

<iframe src="html/obsah00.htm" width="100%" height="100" frameborder=0 marginheight=0 harginwidth=0 target="levy" name="vrchni" border="0"></iframe>

<iframe src="html/obsah10.htm" width="150" height="" id="levyIframe" frameborder=1 marginheight=0 harginwidth=0 target="_parent" name="levy" border="0"></iframe>
<div style="position: absolute; top: 120px; left: 160px">

tady bude úvodní stránka
</div>
</body>

</html>
KaNo
Profil *
Díky, vyzkouším to.
Ad 1) rád bych se na to vy*** ale neznám lepší způsob, jak udělat to, aby se menu a všechno to okolo nenačítalo pořád dokola když se na něco klikne. Takže jsem chtěl levé a horní menu načíst jednou a vlastní obsah posílat doprostřed. (vyčetl jsem to na jakpsatweb.cz)
Pokud mi poradíš něco inteligentnějšího, rád se poučím (to myslím vážně, není to vtip...)
Díky
KaNo
Lexter
Profil
sice tomuhle moc nehodluju z vlastní blbosti, ale pokud se opravdu chceš vprdnout na rámy a já to docela doporučuju, protože rámy pro stavbu webu se holt už nepoužívají, tak ti doporučím jednoduché funkce v php. Tuším, že se jmenují include a require a jeden návštěvník na mých stránkách se zmínil o funkci switch , ale tomu už houby rozumím. V include jde tedy jde o to, že vytvoříš soubor, například navigace html a do například index.php vložíš:

<?php 

include "navigace.html";
?>


Snad jsem to moc nedochrochnil. Jde o to, že tato funkce ti vloží obsah souboru do souboru jiného. pokud tady celou dobu plácám kraviny, tak mě opravte.
venca12
Profil
Lexter ::: Předpokládám, že KaNo to chtěl udělat tak, ne aby nemusel psat menu pořád dokola, ale aby se uživateli nenačítala celá stránka, ale jenom její část.

KaNo ::: No nevím. Mrkni se na weby okolo. Který z nich to má udělané, tak jak to chceš ty. Co já vím, tak většina webů se snaží o maximální jednoduchost, tzn. jedna jediná stránka, žádné zanořené fatality. Blbě se ti ty iframy budou potom předělávat, až budeš chtít změnu. Blbě ti v tom budou hledat vyhledávače, když budeš mít různé části stránky na různých místech.

Pokud by jsi chtěl načítat část stránky, bez použití iframe, frame a podobných zvěrstev můžeš použít javascript objekt xmlHttp (někdo tomu říká Ajax).

A to tak, že si vytvoříš nějakou hlavní stránku která bude obsahovat hlavičku, menu a patičku.
Doprostřed ní vložíš nějaký prázdný div, nebo něco, do kterého budeš pomocí javascriptu vkládat obsah.
A položkami v menu voláš xmlHttp s různými parametry, který ti otevírá různé soubory a vkládá je do toho prostředního divu.

Takhle to bude určitě o něco `čistší`, ale stejně bych ti doporučíl to nedělat a nechat načítání celý stránky.
Lexter
Profil
Taky si myslím, tohle závisí na zapnutém javaskriptu a jak víme, lidé jsou paranoidní a vypínají si ho :)
KaNo
Profil *
to Lexter: PHP nemůžu použít, protože zrcadlo webu bude i na CD a tam mi to nebude fungovat...
KaNo
Profil *
to venca12: s Ajaxem jsem to už taky zkoušel ale opět (jako PHP) je to funkční jen na serveru - na CD mi to fungovat nebude, takže hledám něco univerzálního... Bude se jednat o "katalog" výrobků strojírenského typu a těch údajů tam bude fakt dost, takže to musím rozsekat na níce stránek typu tech.parametry,rozměry,příslušenství atd... A opravdu bych chtěl, aby se při kliku načetla jen ta volaná stránka a ne celý layout. Možná jsem paranoidní a lpím na blbosti, takže pokud je to tak, tak mi dejte po čumáku a já se vzpamatuju a třeba to zkusím přes "tabulky"...
Bubák
Profil
PHP nemůžu použít, protože zrcadlo webu bude i na CD
Jde to udělat v PHP ä offline CD verzi stáhneš třeba pomocí HTTrack Website Copier.
KaNo
Profil *
to Bubák: no tak to je trochu krkolomné. Chtěl bych to udělat jednoduše a elegantně, jak jinak, že?
Fyod
Profil *
Hele, řeším něco podobnýho jako ty, zkus se mrknout semka http://www.dynamicdrive.com/dynamicindex17/iframessi2.htm, třeba ti to pomůže.

Jinak ty kecy o tom jak se "rámy už nepoužívají" si strčte někam, píšete to tady skoro v každým threadu. Nemuvím o klasických rámech ála FrontPage, ale dynamickej iframe dokáže udělat to, co byste s hloupým php programovali sto let, elegantně, rychle a s podporou 99% prohl.

Cituju z www.jakpsatweb.cz "Protože prohlížeč Netscape 4 je na ústupu, dají se vnořené rámy vcelku dobře používat. Nejčastěji se využívají jako různá menu nebo pro usnadnění práce autora. V poslední době je vídám zejména v reklamách. Určitě vymyslíte spoustu možností. Důležité je vědět, že to existuje. Iframem se dost zabývám v textu o Skládání stránek z kousků."

Jediný s čím nesouhlasím je že Ntsc 4 je na ústupu, protože ten můžou používat jedině někde v africe v poušti a ti se stejnak na můj web dívat nebudou.
Fyod
Profil *
http://www.dynamicdrive.com/dynamicindex17/iframessi2.htm bez čárky
venca12
Profil
KaNo ::: Člověče, to víš, že to jde za pomocí Ajaxu (Bože, jak já nesnáším tohle slovo, je tak, tak moc p.r.) bez použití PHP, mrkni na ukázku http://venca12.wz.cz/public/pageNoIframe/. Stáhnout si to můžeš v souboru http://venca12.wz.cz/public/pageNoIframe/pageNoIframe.zip.

Samozřejmě pokud jde o to, že to bude umístěné celé na CD, můžeš to udělat pomocí klasický rámů (frameset).
venca12
Profil
Fyod ::: Můžeš mi dát nějaký příklad, co bych hloupým PHP programoval sto let a dynamickým iframe, bych to měl, elegantně, rychle... Připadá mi to totiž, jako kdyby jsi řekl, že sekačkou udělám něco rychle, kdežto kladivem bych to dělal sto let.
Fyod
Profil *
Tak běž sekat trávu kladivem, pro mě za mě. :D
venca12
Profil
Fyod ::: Já jsem nic o sekání trávy neříkal. Je ti buď méně než 20 let, anebo nejsi příliš chápavý.
KaNo
Profil *
to: všem - Díky za tipy, určitě zkouknu všechny doporučené příklady a něco z toho zkusím vykouzlit. Díky i za sekačku...
Toto téma je uzamčeno. Odpověď nelze zaslat.

0