ugrás a tartalomhoz

Firefox scrollbar újraméretezési hiba

nray84 · 2013. Már. 20. (Sze), 22.16
Sziasztok!

Még új vagyok a fórumon.
Dolgozom a weboldalamon elég jó ideje.
Beleütköztem egy hibába.
Ezért az oldalamból csináltam egy nagyon lebutított sablont, hogy tudjak kisérletezni.

Az oldalnak azaz alapja, hogy van két div, felül, alul.
A felső a menü, ahol "target"-l változtatom hogy mi kerüljün az alsó frameben.

Az a gondom, hogy van a három menü: One, Two, Three
Ezek különböző "hosszúságu" oldalak.
Alapba a "one.html" jelenik meg az alsó iframe-be, s természetesen a scrollbar is akkora, amekkorának lennie kell.
De, amit rákattintok a "Three"-re, mivel több a szöveg benne, így a scrollbar is megnő...de ha megint a "One"-ra illetve a "Two"-ra kattintok, akkor scrollbar nagysága megmarad, s túltudom görgeti a rövidebb szöveget.
Szóval értitek, mintha a scrollbar nagysága nem "resetelődne"

Egyébként IE8/Chrome/Safari-ban minden rendben, csak Firefoxban/Operában -ban vannak a gondjaim.

Tehát, ha bejön a példa oldalam, akkor menjetek végig "One" "Two" "Three"-n, majd újra menjetek a "One"-ra Firefoxban, s nézzetek a scrollbarra...

http://nightray-music.com/s/

Szóval ez miért van?

Kérlek segítsetek!

CSS:
"#menu {font-size: 16px; word-break: normal; font-family: 'Futura-Medium', 'Futura', 'Trebuchet MS', sans-serif; font-weight: bold;
margin-top: 40px; /* standard */
margin-top: 33px\9; /* IE 8 and below */
}
#menu a {
text-decoration: none;
background-color: black;
color:#D3D3D3; /*alapba ilyen szinuek a menuk*/
padding: 5px 10px;
}

#menu li {
display: inline; /*felsorolast vizszintesbe rendezi*/

}

#menu a:hover {
background-color: white;
color:black;
/* border-top: 3px solid white; Igy meg vonalak lesznek
border-bottom: 3px solid white;*/
}
#middlebox{
position: static;
width: 100%;
height: auto;
margin-top: 88px;
background-color:green;
color: black;
padding-top: 40px; /* standard */
padding-top: 113px\9; /* IE 8 and below */
top:1200px;
display: block;
}

nav{
text-align: center;
margin-bottom: 500px;
margin-top: 12px;
background: white;
font-size: 24px; word-break: normal; font-family: 'Futura-Medium', 'Futura', 'Trebuchet MS', sans-serif; color: black;font-weight:bolder;
line-height: 18px;
display: inline;
}
#maintop{
top:-1px;
position: fixed;
background: red;
text-align: center;
margin: 0 auto;
height: 120px;
width: 1024px;
}

#maintoplocate{
position:fixed;
width:100%;
top:-12px;
height: 131px;
background: red;
}

iframe {width: 100%; display: block;}

html, body, div, iframe { margin:0; padding:0; }"
 
1

Hogyan?

Pepita · 2013. Már. 20. (Sze), 23.31
Elég érthetetlen a megfogalmazásod.
Légyszíves a vonatkozó HTML-t és a fontos CSS-részeket idézd, ne kelljen kiégetnünk a szemünket a rengeteg sallanggal. És használd a kódszínezőt, azért van, hogy el is tudjuk olvasni azt, ami neked egy paste volt.

A kérdésedre előzetes válaszom:
Biztos, hogy csak iframe-mel lehet megoldani a feladatot? Szerintem lesz rá jobb megoldás is.
2

válasz

nray84 · 2013. Már. 21. (Cs), 01.26
Hát, ha érthetetlen akkor, nézzétek meg a linket Firefoxal, s a scrollbart- figyeljétek... Először menjetek végig a menün One... Two... Three, aztán pl. One.. ránéztek a scrollbarra,s már értiek, hogy mire gondolok:)

iframe helyett, hogy lehetne megoldani?
4

Nem nyert

Pepita · 2013. Már. 21. (Cs), 20.02
Leírtam, mik kellenek ahhoz, hogy segítsek. Bocs, de nincs kedvem az általad meghatározott böngészővel a te oldaladat nézegetni, ha olyan nagy gond a vonatkozó HTML-t és a fontos CSS-részeket bemásolni ide colorer-be, akkor nem tudok segíteni.

iframe helyett több megoldás is van, attól is függ, statikus-e az oldal, lehet esetleg ajax is (bár keresők miatt nem ajánlom), stb. El kell határoznod magad valamerre, valamint akarnod kell megoldani, mert helyetted senki sem fogja (legalábbis ingyen nem).
6

Köszi!:)

nray84 · 2013. Már. 21. (Cs), 21.53
Pepita rendben van, elnézésedet kérem.
Szóval a HTML kód:

HTML:
"<script type="text/javascript">
function sizeFrame() {
var F = document.getElementById("myFrame");
if(F.contentDocument) {
F.height = F.contentDocument.documentElement.scrollHeight+30; //FF 3.0.11, Opera 9.63, and Chrome and above
} else {



F.height = F.contentWindow.document.body.scrollHeight+30; //IE6, IE7 and Chrome and above

}

}

window.onload=sizeFrame;
</script>



</head>
<body onload ="sizeFrame('myFrame');"></body>
<div id="maintoplocate"></div>
<div id="maintop">
<nav>
<ul id="menu" onload="sizeFrame('myFrame');">
<li><a href="one.html" target="myFrame">ONE</a></li>
<li><a href="two.html" target="myFrame">TWO</a></li>
<li><a href="three.html" target="myFrame">THREE</a></li>
</ul>
</nav>
</div>

<!-- ITT LESZ VALAHOL A HIBA, vagy a Script-ben -->

<div id="middlebox">
<iframe id="myFrame" name="myFrame" src="one.html" onload="sizeFrame('myFrame'); scroll(0,0);"></iframe>
</div>

</body>
</html>"
10

[colorer=html]

Pepita · 2013. Már. 23. (Szo), 21.06
Semmi baj, de ebből még mindig hiányzik a kódszínező.
Bár már megoldottad, mégis úgy szebb lenne.
3

A sizeFrame nevu csoda

Ajnasz · 2013. Már. 21. (Cs), 14.26
A sizeFrame nevu csoda fuggvenyt tanulmanyoznam a helyedben.
Ja es a html markupot is!
5

sizeFrame()

Endyl · 2013. Már. 21. (Cs), 21.17
Ahogy Ajnasz is írta, a sizeFrame nevű függvénnyel van a hiba (többek között). Minden betöltéskor megváltoztatja az iframe méretét, csak nem arra, amire te gondolnál. A gond az, hogy a contentDocument méretét veszi alapul (és ahhoz hozzáad harmincat), az viszont legalább akkora méretű lesz, mint az iframe-nek beállított méret, ami ebből következőleg egyre nagyobb és nagyobb lesz.
Ha megfigyeled, akkor ha csak az első linkre kattintgatsz, akkor is egyre csak növekszik az iframe mérete emiatt. Jelen felállásban mindig a body méretét kellene figyelni, nem a contentDocumentét, és akkor jó lenne.

De valóban lehet, hogy praktikusabb megoldásra jutnál, ha van lehetőséged szerveroldalon, dinamikusan előállítani a tartalmat és jobban átgondolnád ezt a dokumentumszerkezetet.
7

Köszönöm!

nray84 · 2013. Már. 21. (Cs), 21.54
Köszönöm.
Megnézem a html markup-t meg ezt a sizeFrame függvényt.:)
8

Nem rossz...

nray84 · 2013. Már. 21. (Cs), 21.59
Most próbálkozom a script átírásával. Firefox-l már jól működik, de most meg Safarival... Csak megoldodik, már mit szivatott...:)
9

Sikerült!!:)

nray84 · 2013. Már. 21. (Cs), 22.35
Köszi szépen a segítséget és az inspirációt, azt hiszem, hogy összejött:)
http://www.nightray-music.com/s2

Most ilyen lett a script:

"<script type="text/javascript">
function sizeFrame() {
var F = document.getElementById("myFrame");
if(F.contentDocument) {



F.height = F.contentWindow.document.body.scrollHeight+40; //FF, Opera
F.height = F.contentDocument.documentElement.scrollHeight+30; //Safari



} else {



F.height = F.contentWindow.document.body.scrollHeight+30; //

}

}

window.onload=sizeFrame;
</script>"