webForumDet fria alternativet

location.replace + iframe + gecko

8 svar · 308 visningar · startad av @nders

@ndersMedlem sedan juni 200026 914 inlägg
#1

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
#2

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
#3

... och contentDocument fungerar givetvis inte i IE?

Stort tack för ditt svar! :)

Peter SMedlem sedan dec. 20025 484 inlägg
#4

Ja, IE använder istället contentWindow.

@ndersMedlem sedan juni 200026 914 inlägg
#5

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
#6

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

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
#8

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
#9

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

Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb