webForumDet fria alternativet
Logga in / Bli medlem

Problem med location.href för iframe

JavaScript

7 svar · 373 visningar · startad av haider

Medlem sedan jan. 2003956 inlägg
Trådstart#1

Tjena..

Jag har ett mycket underligt problem.
När jag skriver:

contence.location.href=(location.search.length>1)?location.search.substring(1):"sidor/xcellfitness.htm";

Så säger explorer att den inte kan indentifiera contence trots att jag har en iframe som heter så.

Så ser iframe-koden ut:

<iframe src="" name="contence" ....></iframe>

Jag vill allså byta ut src, med hjälp av ett skript.
Sidan finns på www.xcellfitness.com/main.htm

Som sagt, jag har provat på detta innan utan problem, men nu är det trouble visst...

Medlem sedan juni 20004 308 inlägg
#2

Finns iframen när koden exekveras? Om du kör scriptet direkt (ej via en länk eller onload, d.v.s. när allt är laddat) och iframen ligger efter scriptet i koden så kommer inte scriptet att fungera.

Medlem sedan jan. 2003956 inlägg
#3

Ja, anropas från en extern JS fil.
Men den anropas från samma dokument som iframe finns i.

Är det inte märkligt?

Medlem sedan juni 20004 308 inlägg
#4

Nja, det behöver inte vara så märkligt. iframen måste som sagt finnas vid det tillfälle när koden körs. Att scriptet är inlänkat från en .js-fil gör inte saken bättre.

Exempel:

<iframe name="contence"></iframe>
<script type="text/javascript">
contence.location.href="http://www.google.com";
</script>

Funkar!

<script type="text/javascript">
contence.location.href="http://www.google.com";
</script>
<iframe name="contence"></iframe>

Funkar inte!

Du kan även lösa det genom att köra koden onload:

window.onload=function(){
contence.location.href=(location.search.length>1)?location.search.substring(1):"sidor/xcellfitness.htm";
}
Medlem sedan jan. 2003956 inlägg
#5

Jojoxx, jag har inte förklarat situationen riktigt noga.

En gång fick jag hjälp av dig ifråga om sidor som hamnat utanför sin frame, och hur jag kunde få dem på plats igen.

Skriptet jag fick av dig, funkade super, men å andra sidan, så hade den inget efter www.domän.se/

I detta fallet, så finns en sida också angiven, www.domän.se/main.htm

Detta tycks vara boven i ärendet.

Så här såg skriptet ut, som placerar dokumentet rätt:

window.onload=init;
function init(){
 content.location.href=(location.search.length>1)?location.search.substring(1):"content.htm";
}

Jag får erkänna att jag inte vet hur man tolkar content.location.href=(location.search.length>1)?location.search.substring(1):"content.htm"; men det funkar i alla fall.

Jag har även använt den i ett annat sammanhang, men där har jag skrivit

var contentz=(location.search.length>1)?location.search.substring(1):"content.htm";

Där jag använt contentz på detta sättet:

document.write('.... src="' + contentz + '"....');

Och då har det funkat bra med.
Så jag funderar nu, att om jag inte får rätt på det, så ska jag använda variabel-metoden, och ett skript som skriver in raden för iframen där iframen ska finnas, istället för att ha skrivit in iframe-raden redan från början.

Har jag förklarat bättre?
Säg till annars, om nåt ännu verkar oklart.

Medlem sedan juni 20004 308 inlägg
#6

haidar skrev:

content.location.href=(location.search.length>1)?location.search.substring(1):"content.htm";

Detta är en villkorsstyrd tilldelning. Exempel;

idagardet=(month==12 && day==24)?"Julafton":"Inte julafton";

Först kommer alltså objektet vars värde skall tilldelas. Inom parentesen är uttrycket som står till grund för tilldelningen. Efter frågetecknet är värdet ifall uttrycket är sant och efter kolonet är värdet om uttrycket inte är sant.

location.search är query-delen av url'en, inklusive inledande "?", och .substring(1) tar ut värdet från 2'a tecknet (index 1) till sluten av strängen.

Lade upp ett litet exempel här:
http://www.jojoxx.net/wF/89043.html
http://www.jojoxx.net/wF/89043.html?http://www.yahoo.com

Medlem sedan jan. 2003956 inlägg
#7

:e

Yes. Det är exakt så jag vill göra.
Men, hos mig tycktes det inte funka - ska kolla igenom min sida och jämföra med din kod.

Jag löste det med document.write('<iframe....' + variabel (som är src) ... ');

Men de enklaste lösningar är bäst, och http://www.jojoxx.net/wF/89043.html?http://www.yahoo.com är så enkel som det får lov att vara.

I'll be back :h

Medlem sedan juni 20004 308 inlägg
#8

Ok :) Kolla så att du inte får scriptfel (från något annat script på sidan) så att scriptexekveringen avbryts.

259 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)