@ndersMedlem sedan juni 200026 914 inlägg
Hej, vänner!
Jag byter innehåll i en iframe sisomså:
document.getElementById('handler').src='foo.asp?foo=bar';
Jag vill dock inte göra på det sättet, eftersom det lägger in "sidbytet" i browserns history. Koden fungerar fint i IE & Gecko-läsare dock. Jag tänkte prova att byta med location.replace istället, för att undvika att påverka history. Jag provade således med följande:
document.handler.location.replace('foo.asp?foo=bar');
Det är såklart felaktigt, eftersom det bara fungerar i Internet Explorer. :)
Hur ska jag göra?
Mvh och tpf,
Peter SMedlem sedan dec. 20025 484 inlägg
Tjena! :)
window.frames["namn"].location.replace(...
I t.ex. FF returneras ett HTMLIFrameElement från getElementById("handler"). Detta objekt har ingen 'location'-egenskap, utan man får använda:
document.getElementById("handler").contentDocument.location.replace(...
@ndersMedlem sedan juni 200026 914 inlägg
... och contentDocument fungerar givetvis inte i IE?
Stort tack för ditt svar! :)
Peter SMedlem sedan dec. 20025 484 inlägg
Ja, IE använder istället contentWindow.
@ndersMedlem sedan juni 200026 914 inlägg
Urk. Jag gillar inte att skriva olika kod för olika läsare... :(
Återigen; stort tack! :f
Peter SMedlem sedan dec. 20025 484 inlägg
På det viset kanske window.frames är att föredra, eftersom det fungerar utan problem i FF/IE/Opera.
:)
@ndersMedlem sedan juni 200026 914 inlägg
Hmm, kanske får laborera lite med det?
Mitt enda mål med detta är att byta innehåll i en iframe som ligger på sidan utan att history påverkas. Bättre med window.frames då? Annars; är contentWindow att föredra om man använder ovan metod för IE, istället för att göra som jag gjort i mitt kodexempel?
Mvh
Peter SMedlem sedan dec. 20025 484 inlägg
Det beror på vilka versioner av IE du vill stödja. contentWindow introducerades tydligen i.o.m. IE5.5, medan frames[] troligen varit med längre än så. Men eftersom du kanske använder document.getElementById på fler ställen, spelar det nog ingen roll.
Jag skulle använda window.frames :)
Red./ Ja, utifrån ditt kodexempel skulle jag satsa på contentWindow.
@ndersMedlem sedan juni 200026 914 inlägg
Men eftersom du kanske använder document.getElementById på fler ställen, spelar det nog ingen roll.
"Jag" använder väldigt blandade metoder.
Jag jobbar i en gigantisk webbapplikation som kom ut i första versionen år 2000, då folk, av någon outgrundlig anledning, fortfarande använde Netscape 4.x. Mycket javascriptkod är alltså från början skriven för att fungera för IE4+, och NN4+. De senaste två åren har jag anpassat alla "yttre" delar av applikationen till .getElementById() och liknande för att ha en kod som fungerar överallt.
Men fortfarande har jag undantag i koden på en hel del ställen, så jag provar ditt contentWindow / contentDocument. :)
Tack! :bire