webForumDet fria alternativet

Kod stoppar i Safari, funkar i FF o IE

JavaScript

3 svar · 335 visningar · startad av s4ndp4pper

Medlem sedan juni 200422 inlägg
Frågan#1

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

Medlem sedan aug. 20039 340 inlägg
#2

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.

Medlem sedan juni 200422 inlägg
#3

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.

Medlem sedan juni 200422 inlägg
#4

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...

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
140 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)