webForumDet fria alternativet

VIlken url i iframe?

JavaScript

9 svar · 267 visningar · startad av Poffe

Medlem sedan apr. 20022 743 inlägg
Frågan#1

Tjena!

Har en sida med en iframe. Hur kan jag på huvudsidan få fram vilken adress det är till sidan i iframen?

VIll jag ha adressen på sidan jag är på så anävnder man ju document.location, men jag får inte till det med iframen. Är inte så hajj på javascript som jag trodde :h

Medlem sedan dec. 20025 483 inlägg
#2

Halloj! :)

Om det inte är en extern sida kan du använda

window.frames["namn_på_iframe"].location
Medlem sedan apr. 20022 743 inlägg
#3

Hur menar du extern?

Verkar inte fungera det där iallafall, får bara upp adressen till sidan som iframen ligger i, alltså samma som med document.location.

Medlem sedan dec. 20025 483 inlägg
#4

Under samma domän.

Se bifogat exempel. (Klicka på länkarna från vänster till höger.)

:)

Medlem sedan apr. 20022 743 inlägg
#5

Så det går alltså inte att få reda på adressen om de inte ligger under samma domän? Verkar konstigt måste jag säga, det borde ju inte ha nått med det att göra.
Eftersom javascriptet ändå körs i användarens webbläsare borde den ju kunna ta reda på vilken adress det är tyvär man ju.

Medlem sedan dec. 20025 483 inlägg
#6

Ändra tmp.html till

<script>
function f(){
  try {
    alert(window.frames["i"].location);
  } catch(e){
    alert("error: " + e.description);
  }
}
</script>
<a href="javascript:void (window.frames['i'].location.href='foo.html')">till foo.html!</a>
<a href="javascript:f()">alert()</a>
<iframe name="i" src="http://www.webforum.nu"></iframe>

...och klicka på länkarna i omvänd ordning så får du se.

Medlem sedan apr. 20022 743 inlägg
#7

Är ju i princip samma sak, bara att man får upp error nu om man klickar på wF.

Men det går alltså inte att få reda på adressen om sidorna inte ligger på samma domän?

Medlem sedan dec. 20025 483 inlägg
#8

Ja, ett "Åtkomst nekad". Vi kan ju antaga att denna restriktion införts av en anledning och man därför bör beakta den.

Ett mindre bra alternativ skulle kunna vara att du sparar undan adressen till den sida som skall till att laddas i ramen:

var myVar = 0;

<a href="foo.html" onclick="myVar=this.href"...

Sedan

<a href="javascript:void(alert(myVar))"...

...för att ta reda på adressen. Problemet med denna lösning är ju att det inte sparas undan något värde om användaren klickar på en länk på sidan i ramen; det fungerar ju endast om denne användare klickar på en länk i huvudsidan.

:)

Medlem sedan apr. 20022 743 inlägg
#9

Nu kan jag ju inte sen vad det skulle vara för anledning men jag tror dig ;)

Enligt mig riktigt dumt men nu får jag en ny utmaning i att hitta en annan lösning :birp

Medlem sedan dec. 20025 483 inlägg
#10

Det kan finnas workarounds, men eftersom de definitivt kommer att täppas till förr eller senare så känns det ganska meningslöst att använda dem.

:)

260 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)