Pröva att byta ut koden mot:
parent.menu.location.replace("l_se_m.html");
parent.main.location.replace("l_se.html");
// ... eller ...
window.open("l_se_m.html","menu");
window.open("l_se.html","main");
... och se om nåt funkar bättre.
3 svar · 335 visningar · startad av s4ndp4pper
Hej! Har ett HTML-dokument med ett gäng divvar som innehåller ett antal iframes. En div innehåller en iframe ("intro"), en annan innehåller två ("menu" och "main") och jag använder js för att dels tända och släcka de två divvarna, dels byta sida i "menu"- och "main"-iframesen.
HTML:
<div id="intro_div">
<iframe id="intro" name="intro" src="l_i.html" width="857" height="605"
frameborder="0" scrolling="no">Här kommer introt.</iframe>
</div>
<div id="main_div">
<iframe id="menu" name="menu" src="loader_test.php?
load=menu_test01.jpg" width="832" height="93" frameborder="0"
scrolling="no">Här ska det va en meny.</iframe>
<iframe id="main" name="main" src="loader_test.php?
load=main_test01.jpg" width="832" height="445" frameborder="0"
scrolling="no">Här ska det va innehåll.</iframe>
</div>
I "intro"-iframen laddas en fil (l_i.html) med denna länken:
<a href="javascript:toggle_se();">Se</a>
och funktionen ser ut så här (ligger i extern fil som anropas i alla sidor):
function toggle_se(){
var main_field = parent.document.getElementById( 'main_div' );
var intro_field = parent.document.getElementById( 'intro_div' );
main_field.style.display = "block";
parent.menu.location.href = "l_se_m.html";
parent.main.location.href = "l_se.html";
intro_field.style.display = "none";
}
Det som koden ovan ska göra, är alltså att tända "main", byta innehållet i iframesen och sen släcka "intro"-divven. Detta funkar fint i IE och senaste FF på mac/PC, men i Safari verkar den sluta köra koden efter main_field.style.display = "block";. Om jag sen klickar på länken en gång till så körs resten av koden.
Any ideas? Tack på förhand,
Johan
Pröva att byta ut koden mot:
parent.menu.location.replace("l_se_m.html");
parent.main.location.replace("l_se.html");
// ... eller ...
window.open("l_se_m.html","menu");
window.open("l_se.html","main");
... och se om nåt funkar bättre.
Nej, det hjälpte inte. Jag testade att flytta runt display-deklarationerna också, men det ballade bara ur på olika sätt. Helskumt.
F.ö. så gillade inte Safari window.open, det öppnades som egna fönster istället.
Update: testade en metod jag hittade på Quirksmode , men den funkade inte i varken Sf eller FF:
frames['menu'].location.href = "l_se_m.html";
frames['main'].location.href = "l_se.html";
Eller har jag skrivit fel? Är JS-n00b...