webForumDet fria alternativet

Anpassa iframes storlek efter innehåll

12 svar · 1 537 visningar · startad av @nders

@ndersMedlem sedan juni 200032 969 inlägg
#1

Hej!

Jag har sökt som en fuktig bäverhanne, men inte hittat något som kan hjälpa mig på vägen. Jag har en iframe som från början är, säg, 100x100 pixlar stor.

Hur får jag min iframe att bli större så allt innehåll syns? När innehållet i iframen förändras vill jag alltså köra ett script som ändrar storleken på iframen.

Någon idé eller länk? :)

Mvh och tpf,

Jesper TMedlem sedan nov. 20017 144 inlägg
#2

Kan innehållet i iframen vara allt möjligt?
Hur skall skriptet veta hur stor iframe som är lämplig i storleken?

Jesper TMedlem sedan nov. 20017 144 inlägg
#3
<html>
<head>
<script>
function resizeIframe(w,h){
document.getElementById("iframe").style.width = w;
document.getElementById("iframe").style.height = h;
};
</script>
</head>
<body>
<iframe src="iframe.htm" style="width:100px;height:100px;" border="0" id="iframe"></iframe>
<br>
<input type="button" onclick="resizeIframe(200,150)" value="Resize!">
</body>
@ndersMedlem sedan juni 200032 969 inlägg
#4

Kan innehållet i iframen vara allt möjligt?

Tja, i stort sett.

Hur skall skriptet veta hur stor iframe som är lämplig i storleken?

Det är väl det som är frågan?
Att ändra storlek på en iframe är en trivial sak, men jag vill att allt som ligger i den ska få plats. Jag vill alltså att det mer eller mindre ska se ut som att iframe-innehållet ligger i samma sida som iframen.

I värsta fall får jag slänga in ett frameset, men jag skulle helst se ett script som ändrar storlek på iframen så allt innehåll syns.

mvh

Jesper TMedlem sedan nov. 20017 144 inlägg
#5

Liten fråga, varför använda iframe? Kom just på en annan idé beroende på vad du skall ha det till.

Peter SMedlem sedan dec. 20025 483 inlägg
#6

I <iframe>-dokumentet:

<body onload="parent.f(document)">
...

I huvudfönstret:

function f(obj){
    document.getElementById("[b]iframeidentifierare[/b]").style.height = obj.body.scrollHeight + "px";
}

Beroende på hur kompatibel med grottfolkwebbläsare du vill att det skall vara, kanske du får substituera scrollHeight-egenskapen. Dock skall detta fungera i Mozilla 1.x och IE6. Sedan kanske du får lägga på någon pixel, men det avgör givetvis du.

:)

PalleMedlem sedan apr. 20003 174 inlägg
#7

En variant: :)

[red]<html>
<head>

	<script type="text/javascript">
	<!--
	function resizeIframe(elm)
	{
		var frameHeight = document.getElementById(elm).contentWindow.document.body.scrollHeight;
		document.getElementById(elm).height=frameHeight;
	}
	//-->
	</script>

</head>
<body>

<iframe width="300" id="the_iframe" onload="resizeIframe(this.id);" src="iframe.htm" scrolling="no"></iframe>

</body>
</html>[/red]
@ndersMedlem sedan juni 200032 969 inlägg
#8

Liten fråga, varför använda iframe? Kom just på en annan idé beroende på vad du skall ha det till.

Så här är det:
Jag håller på att bygga en formuläreditor till vårt cms. I huvudfönstret ligger en sida med basinformation om formuläret, och någonstans, i en iframe till exempel, hade jag tänkt att lägga en preview på det formulär man håller på att skapa.
Det är egentligen mitt andraval, jag hade från början tänkt att från mitt popupfönster där jag skapar formulärelement modifiera innerHTML i ett element i huvudsidan, men koden förstörs på vägen. Fatten sie? :)

Beroende på hur kompatibel med grottfolkwebbläsare du vill att det skall vara, kanske du får substituera scrollHeight-egenskapen. Dock skall detta fungera i Mozilla 1.x och IE6. Sedan kanske du får lägga på någon pixel, men det avgör givetvis du.

Jag struntar högaktningsfullt i folk som inte är smarta nog att uppgradera sina webbläsare. ;)
IE6 och Mozilla räcker fint. :)

Angående Peters lilla script: Ser ut att funka klockrent! Tio pixlar till fick det bli.

Tacketack!

Tack även Jesper och Palle (jag ska se till att testa ditt script senare också :-) )

mvh

Jesper TMedlem sedan nov. 20017 144 inlägg
#9

-"Tio pixlar till fick det bli"
= scrollern?

@ndersMedlem sedan juni 200032 969 inlägg
#10

Jesper T skrev:

-"Tio pixlar till fick det bli"
= scrollern?

Jag vet inte så noga. När jag lade till tio pixlar så försvann i alla fall den vertikalscrollern. Var det det du menade? :)

Jesper TMedlem sedan nov. 20017 144 inlägg
#11

Japp, har för mig att olika läsare tar med respektive utesluter scrollens brädd i det totala så att säga.
Annars så gillar jag lådsasremotescripting:

[B]Sida1.htm[/b]
<script type="text/javascript">
function getText(txt){
document.getElementById("myDiv").innerHTML = txt;
};
</script>
<div id="myDiv"></div>
<iframe src="iframe.htm" style="width:1px;height:1px;" name="iframe" frameborder="0" id="iframe"></iframe>

[B]iframe.htm[/b]
<script type="text/javascript">
window.onload=function(){window.parent.getText(document.getElementById('myContent').innerHTML);}
</script>
<div id="myContent">
<b>Formulär 1</b><br>
<input type="radio"><br>
<input type="radio"><br>
<input type="radio"><br>
<input type="text"><br>
<input type="button">
</div>
LodizMedlem sedan maj 20013 inlägg
#12

Jag har sökt samma script, men stött på problem då jag vill ändra storleken efter en sida som inte ligger på min server.

Får access denied.

Vet någon om man kan gå förbi det här problemet?

Mvh Martin.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#13

tyvärr inte. Access denied beror på att du försöker komma åt data mellan frames, vilket inte är tillåtet.

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