webForumDet fria alternativet

auto height av ifram mellan olika domäner

2 svar · 381 visningar · startad av PATTAN

PATTANMedlem sedan maj 200315 inlägg
#1

Hej. har som många andara personer som vill ha en iframe som anpassar sig efter sitt innehåll använt Eddie Traversa's kod.

//copyright 2004 Eddie Traversa 
if (!window.opera && !document.mimeType && document.all && document.getElementById){
parent.document.getElementById(id).style.height=this.document.body.offsetHeight+"px";
}
else if(document.getElementById) {
parent.document.getElementById(id).style.height=this.document.body.scrollHeight+"px"
}
}

Nu är det så att min iframe och innehållet ligger på två olika servrar. (av tekniska begränsnigar).
När jag kör ovanstående kod så kommer jag få ett fel om att jag inte får tillgång att läsa av värdet på parent.document.getElementById(id).style.height efter som den inte ligger inom samma domän..

Nu till min fråga. Går det att lösa detta på något annat sätt? varit inne på att man sparar värdet av höjden på sidan i en cookie.. men hur ska parent sidan sedan veta när den ska läsa av de värdet och uppdatera sidan..

Ett mycket svårt problem de här för mig.. hoppas att det finns någon som har en bra lösning?

MVH Patrik

PATTANMedlem sedan maj 200315 inlägg
#2

Ok efter en del grubbland har jag kommit fram till tre ideer.

1) Parent sidan kollar vilken sida som är inladdad i iframen (hur gör man det?) Sedan har man det hårdkodat vilka värden iframens höjd ska få.

Vet inte om detta sätt utlöser samma fel om att man inte kan läsa värden från olika domäner...

2) Ett javascript skirver höjden av sidan i en <input type="hidden" />. Sedan så har man ett php script på parent sidan som läser av värdet på child sidan (går nog att lösa med fopen() ). Sedan skrivs värdet ut till höjden på iframen..

Låter bra i mina öron... men hur ska man veta att man t.ex. har tryckt på en länk i Iframen ?? då ska ju sidan uppdateras med nytt värde... finns det typ onchange man kan använda till en Iframe??

3) Andra programmerings språk. Java, om den klarar av att komminusera mellan varande över olika domän.. Men då är vi tillbaka till problemet med om man klickar på en länk i Iframen att parent sidan måste uppdateras.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#3

Ett sätt kan möjligen vara att sidan i iframen skickar en vidare till en sida på samma domän som parent-sidan. Denna justerar höjden och går sedan tillbaka med history.back().
Den första sidan bör först av allt ha lämnat en cookie så att man inte hoppar fram och tillbaka mellan sidorna.

Ett annat alternativ är följande:

<iframe name="contentframe" src="http://annandomän/"></iframe>
<iframe name="helperframe" src="about:blank"></iframe>
...
sedan har du följande kod i sidan på en annan domän:

window.open("http://parent-sidansdomän/changeheight.html?height=" + höjdvariabel);
...
changeheight.html innehåller kod som ändrar höjden på contentframe.

Detta bör funka. Du får klura lite, och komma tillbaka om du inte kommer på hur du ska göra.

131 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)