IFrame SSI script probleem Opera

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mvdb1982
  • Registratie: April 2003
  • Laatst online: 17-03 21:51
Loop tegen het probleem aan dat Opera een iframe height niet begrijpt.

Heb even een test online gezet: http://www.devdbergjes.nl/test/

De index.htm:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<html>

<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>MENU</title>
</head>

<script type="text/javascript">
/***********************************************
* IFrame SSI script II- © Dynamic Drive DHTML code library (http://www.dynamicdrive.com)
* Visit DynamicDrive.com for hundreds of original DHTML scripts
* This notice must stay intact for legal use
***********************************************/
//Input the IDs of the IFRAMES you wish to dynamically resize to match its content height:
//Separate each ID with a comma. Examples: ["myframe1", "myframe2"] or ["myframe"] or [] for none:
var iframeids=["myframe"]
//Should script hide iframe from browsers that don't support this script (non IE5+/NS6+ browsers. Recommended):
var iframehide="yes"
var getFFVersion=navigator.userAgent.substring(navigator.userAgent.indexOf("Firefox")).split("/")[1]
var FFextraHeight=parseFloat(getFFVersion)>=0.1? 16 : 0 //extra height in px to add to iframe in FireFox 1.0+ browsers
function resizeCaller() {
var dyniframe=new Array()
for (i=0; i<iframeids.length; i++){
if (document.getElementById)
resizeIframe(iframeids[i])
//reveal iframe for lower end browsers? (see var above):
if ((document.all || document.getElementById) && iframehide=="no"){
var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
tempobj.style.display="block"
}
}
}
function resizeIframe(frameid){
var currentfr=document.getElementById(frameid)
if (currentfr){
currentfr.style.display="block"
if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight; 
else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
currentfr.height = currentfr.Document.body.scrollHeight;
if (currentfr.addEventListener)
currentfr.addEventListener("load", readjustIframe, false)
else if (currentfr.attachEvent){
currentfr.detachEvent("onload", readjustIframe) // Bug fix line
currentfr.attachEvent("onload", readjustIframe)
}
}
}
function readjustIframe(loadevt) {
var crossevt=(window.event)? event : loadevt
var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
if (iframeroot)
resizeIframe(iframeroot.id);
}
function loadintoIframe(iframeid, url){
if (document.getElementById)
document.getElementById(iframeid).src=url
}
if (window.addEventListener)
window.addEventListener("load", resizeCaller, false)
else if (window.attachEvent)
window.attachEvent("onload", resizeCaller)
else
window.onload=resizeCaller
</script>

<body>

<table border="0" width="100%">
    <tr>
        <td width="181" valign="top"><a target="Guestbook" href="test.htm">MENU:</a><p>
        <a target="Guestbook" href="faq/index.php">FAQ</a></td>
        <td valign="top">
        <iframe id="myframe" src="test.htm" scrolling="no" marginwidth="1" marginheight="1" frameborder="0" vspace="0" hspace="0" style="overflow:visible; width:100%; display:none" name="Guestbook"></iframe>

        </td>
    </tr>
</table>

</body>

</html>


De test.htm die in de iframe wordt geladen heb ik even als test volgezet met tekst. In zowel IE als in Chrome werkt dit prima, maar in Opera krijg ik maar een klein stukje (in de hoogte dan) van het iframe te zien.

De reden waarom ik een iframe gebruikt is omdat er (voor mij dan) gemakkelijk scripts in geladen kunnen worden. Een voorbeeld is in bovenstaande link te vinden. Klik maar op FAQ. Dit is b.v. een script wat ik straks graag wil gebruiken.

Weet iemand hoe ik bovenstaand probleem kan verhelpen? Of anders hoe ik anders een bestaand script in mijn pagina kan krijgen zonder iframe?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
mvdb1982 schreef op zaterdag 18 december 2010 @ 01:32:
Weet iemand hoe ik bovenstaand probleem kan verhelpen?
5 tips:
[list]
• Dump die javascript meuk :X
• Dump die javascript meuk :X :X
• Dump die javascript meuk :X :X :X
• Je hebt geen iFrame nodig voor wat je wil
• Wat je wél nodig hebt is een tutorial webdevelopment. Of dat dan PHP of ASP.Net of whatever is boeit niet. Het kost misschien een klein beetje moeite maar je gaat er zooooo veel plezier van hebben dat je over een jaar mijn voeten komt kussen om me te bedanken voor deze tip zodat je niet met deze opzet verder bent gegaan ;)
mvdb1982 schreef op zaterdag 18 december 2010 @ 01:32:
Of anders hoe ik anders een bestaand script in mijn pagina kan krijgen zonder iframe?
Proberen "bij elkaar geleende scripts aan elkaar te lijmen" == recipe for disaster. Zeker als je (java)scripts gebruikt uit het jaar 1819 voor Christus en table-based PHP rommel die je elders weer hebt geleend. Een iFrame gaat niet je oplossing zijn; weten waar je mee bezig bent wel ;)
Note: Updated April 6th, 05' for FireFox 1.x iframe height issue
...
Think of it as SSI (server side includes) emulated using DHTML! This script works in both IE5+ and NS6+, and for other browsers, supports the option to either completely hide the iframe in question or display it using its default height.
:X :')

[ Voor 55% gewijzigd door RobIII op 18-12-2010 02:20 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Aganim
  • Registratie: Oktober 2006
  • Laatst online: 09:39

Aganim

I have a cunning plan..

Wat RobIII zegt..

Sowieso is het imho bagger navigeren in een site met (i)frames. Je hebt de beschikking over PHP, dus gebruik daar gewoon SSI in. Dat is crossbrowser compatible en voor je gebruikers veel prettiger navigeren.

En idd, dump tablebased layouts en verdiep je in het gebruik van CSS voor opmaak. ;)
Proberen "bij elkaar geleende scripts aan elkaar te lijmen" == recipe for disaster.
Dat hoeft opzich geen probleem te zijn, immers: 'goed gejat is beter dan slecht bedacht'. Mits je echter ook begrijpt wat het script doet.
En van dat laatste betwijfel ik of de TS dat ook daadwerkelijk doet. Zo ja, dan zou je immers al de hele meuk direct hebben weggemikt. :+

[ Voor 38% gewijzigd door Aganim op 19-12-2010 00:06 ]