Autor Zpráva
Kos
Profil *
Na jakpsatweb.cz jsem našel tento přípsěvek:

Nelze nastavit rozměry podle obsahu iframe
Nepříjemné je, že nejde udělat takový iframe, který by měnil rozměry podle velikosti vnitřního dokumentu. Rozměry width a height je nutno zapsat napevno při konstrukci vnější stránky. Možná by na to šel napsat nějaký javascript, ale ještě jsem neodladil nic funkčního.


PŘIŠEL UŽ NĚKDO NA TO, JAK SE TO DÁ UDĚLAT ???

Díky moc za odpovědi
BaTeCzKo
Profil
Tohle jsem používal, když jsem ještě neuměl php. Ale oproti php to má spoustu nevýhod.
Do sekce head vložte tento skript:


<script charset="windows-1250" type="text/javascript">
function vypocet_vysky() {
if (document.getElementById) {
var vyska_dokum = document.getElementById('id_ramu').contentWindow.document.body.scrollH eight;
vyska_dokum += 30; // přidat spodní okraj
if (vyska_dokum < 270) // minimální výška
vyska_dokum = 270;
document.getElementById('id_ramu').style.height = vyska_dokum;
}
}
window.onresize=vypocet_vysky;
</script>


a v těle stránky bude tag iframe:


<iframe onload="vypocet_vysky();"
id="id_ramu"
name="id_ramu"
src="vramu.html"
height="410"
width="50%"
frameborder="0"
scrolling="yes"
allowtransparency="false"
>
</iframe>


Atributy tagu iframe si můžete upravit podle potřeby, ale atribut id musí být stejný jako ve skriptu (v tomto příkladu "id_ramu"). Protože skript nebude v některých prohlížečich fungovat, je dobré mít v tagu iframe nějakou defaultní výšku height.
Kos
Profil *
A jak to řešíte pomocí PHP? :o)

I PHP zdroják by mi pomohl...
Kos
Profil *
Ale koukám, že v IFRAME je pevná výška 410. Jakto?
BaTeCzKo
Profil
Kos
Není to pevná, ale přednastavená, kdyby skript nefungoval (nějaký exotický prohlížeč nebo paranoidní uživatel s vypnutým javascritpem),

Pomocí php snadno. Prostě máš 2 hlavní soubory - například hlavicka.inc a spodek.inc.
V souboru hlavicka.inc máš např. toto:


<html>
<head>
<title>Můj web</title>
</head>
<body>
<h1>Můj web</h1>
<table>
<tr valign="top">
<td width="125">
<a href="stranka.php">odkaz</a>
<a href="stranka.php">odkaz</a>
<a href="stranka.php">odkaz</a>
<a href="stranka.php">odkaz</a>
<a href="stranka.php">odkaz</a>
<a href="stranka.php">odkaz</a>
</td>
<td width="600">


V souboru spodek.inc máš např. toto:


</td>
</tr>
</table>
</body>
</html>


A samotný obsah uděláš takto - napřiklad soubor stranka.php:


<? include("hlavicka.inc"); ?>

<h2>Vítejte na mém webu</h2>
<p>Není tu vůbec nic. :D</p>

<? include("spodek.inc"); ?>


Php příkaz include vloží do stránky nahoru obsah souboru hlavicka.inc a dolů obsah souboru spodek.inc. Takže když chceš například změnit něco v menu, tak nemusíš upravovat 10 souborů, ale jen soubor hlavicka.inc, kde to menu máš. Jak snadné.
djlj
Profil
BaTeCzKo
Souborům, které "includuješ", rozhodně nedávej příponu .inc - vždyť tak může každý nahlédnout do zdrojáku! Dej tam třeba *.inc.php...
Kos
Profil *
To vypadá dobře... to bych mohl IFRAME úplně zavrhnout.

Ten zdroják ale vychází z toho, že mám stránky sestaveny z pruhů po celé délce...

Já mám ale stránku rozdělenou jinak. Nahoře asi 150px pruh a pod ním zbytek ve dvou sloupcích 200px a 600px.

Dá se to použít i tady? To jako že místo IFRAME dám do tabulky to INCLUDE ?

Díky moc za radu
Kos
Profil *
Ne, to by mělo jít. Už to vidím.

Ale zase jak udělat, aby se mi v té konkrétní části, která byla dříve IFRAME s name=MAIN měnil vždy obsah, když kliknu v menu? Jak pozná, kde se to má změnit?

Díky
Kos
Profil *
Jestli to teda chápu dobře, tak to funguje tak... že všechny soubory, které dřív byly odkazovány do <IFRAME> musím předělat tak, aby měly svou startovací PHP stránku s tím, že každý z nich bude mít na začátku <? include("hlavicka.inc"); ?> ... pak obsah .. a pak zase <? include("spodek.inc"); ?>


To znamená, že se vždycky bude ta hlavicka.inc a spodek.inc RELOADOVAT ??? ???

Nebo jak to mám udělat, aby to bylo co nejrychlejší?

Díky díky díky
nightfish
Profil
2Kos: zasekává se ti klávesa ?, doporučuji vyměnit klávesnici

ano, samozřejmě se to reloadovat bude
nejrychlejší to bude tehdy, když bude všechen includovaný obsah co nejmenší... :-)
jinak co se týká obrázků, ty by se měly uložit do cache prohlížeče, a tedy se načítat jen při prvním natažení stránky...
Kos
Profil *
Jestli to chápu dobře, tak je přece jedno, jestli je includovaný obsah malý nebo velký podle toho co říkáš.

Reloadovat se přece bude obojí, ne?

Ke každému odkazu bude zvástí specifická stránka xy.php, která se bude skládat z HTML + INCLUDE ... ale startovat se bude vždy znovu.
nightfish
Profil
Jestli to chápu dobře, tak je přece jedno, jestli je includovaný obsah malý nebo velký podle toho co říkáš.
když budeš mít hlavičku 50 kB, tak se ti pokaždé bude includovat 50 kB
když se ti podaří hlavičku stáhnout na 20 kB - např. úsporněji napsaným kódem - tak se bude includovat jen 20 kB
rozdíl tam snad vidíš...

Reloadovat se přece bude obojí, ne?
ano

Ke každému odkazu bude zvástí specifická stránka xy.php, která se bude skládat z HTML + INCLUDE ... ale startovat se bude vždy znovu.
ano
Kadel
Profil
mozna by to chtelo naucit se nejdriv zaklady php a pak ho teprv pouzivat, ale to je snad zbytecne rikat :)

http://php.net
Toto téma je uzamčeno. Odpověď nelze zaslat.

0