iframe script in IE

Status
Niet open voor verdere reacties.

De Mettes

Gebruiker
Lid geworden
29 mei 2007
Berichten
172
Dag iedereen

ik heb op mijn site een iframe geplaatst waar mijn fotoalbum in geopend wordt. Ik heb dit niet gedaan met een php include omdat er dan problemen met mijn navigatiebalk waren.

Nu heb ik een javascript opgezocht dat automatisch de hoogte van het iframe zou bepalen afhankelijk van de inhoud. Dit werkt perfect in FF, Opera en Safari maar niet in IE.

In IE werkt dit soms wat het rare van de zaak is. De ene keer is de hoogte van mijn iframe correct maar als ik dan een aantal keer refresh of opnieuw open is dit inneens niet meer correct.

Dit is mijn script
Code:
function iFrameHeight() 
	{
		if(document.getElementById && !(document.all)) 
		{
			h = document.getElementById('iframe_naam').contentDocument.body.scrollHeight;
			document.getElementById('iframe_naam').style.height = h+ 'px';
		}
		else if(document.all) 
		{
			h = document.frames('iframe_naam').document.body.scrollHeight;
			document.all.iframe_naam.style.height = h+ 'px';
		}
	}

Heeft iemand hier een oplossing voor?
 
Misschien hangt het er vanaf wanneer het script uitgevoerd wordt. Als het uitgevoerd wordt op een moment dat de inhoud van het iframe nog niet (compleet) geladen is dan is het iframe te klein. Je moet het dus uitvoeren in het onload event van het iframe.

Overigens zou ik geen gebruik meer make van document.all. Browsers die getElementById niet ondersteunen bestaan eigenlijk niet meer. En als ze wel bestaan is het onterecht.
 
Laatst bewerkt:
ik heb bij mijn iframe dit erbij gezet en heb de indruk dat mijn iframe nu wel bij IE de jusite hoogte heeft.
Code:
onload="iFrameHeight()";
Bedankt hiervoor

Door wat kan document.all dan vervangen worden? Ik ben geen jave kenner en heb het script niet zelf geschreven.
 
De andere (goede) methode staat er ook al bij. Maarja, laat het maar gewoon zo, in browsers die geen document,all ondersteunen werkt het ook op deze manier. Het is alleen wat vreemdt dat document.all de standaard manier is. Maarja, het werkt hé :)
 
Ja het werkt allesinds maar als ik het beter kan maken doe ik dit liefst voor mocht het in de toekomst veranderen.

Hartelijk dank voor de hulp het was een logische oplossing maar had ern iet aan gedacht ;)
 
Mocht iemand het nodig hebben hier iw volledig wat ik gedaan heb.

In de head:
Code:
<script type="text/javascript">
function iFrameHeight() 
	{
		if(document.getElementById && !(document.all)) 
		{
			h = document.getElementById('twg').contentDocument.body.scrollHeight;
			document.getElementById('twg').style.height = h+ 'px';
		}
		else if(document.all) 
		{
			h = document.frames('twg').document.body.scrollHeight;
			document.all.twg.style.height = h+ 'px';
		}
	}
</script>

In de body tag

Code:
<body>
	<iframe onload="iFrameHeight()"; "title="twg" id="twg" name="twg" src="map/bestand.htm" scrolling="no" FRAMEBORDER="0" BORDER="0" marginheight="10" marginwidth="0" width="100%"></iframe>

<script language="JavaScript"> 
setInterval("iFrameHeight()", 1000)
</script>
</body>

Hopelijk kan ik er iemand mee helpen het werkt nu altijd in IE, FF, Opera en Safari.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan