Dynamisch Iframe

Pagina: 1
Acties:

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:33
Ik ben bezig om voor een site een dynamisch iframe te maken. Ik heb nu een script gevonden wat werkt, maar zodra ik op de pagina die ik aanroep session_start() aanroep (omdat die pagina beveiligd is met sessies), krijg ik een javascript error. Het ziet er als volgend uit:

De indexpagina (met iframe)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<title>Iframe Test</title>
</head>
<body>
Blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat <br />
Blaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaat <br />
<iframe src="test.php" 
        id="contentFRM" 
        marginwidth="0" 
        marginheight="0" 
        scrolling="no" 
        frameborder="1">
</body>
</html>


De pagina test.php, met de functie om het iframe automatisch de goede grootte te geven
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
<?php
session_start();
?>
<html>
<head>
<script type="text/javascript">
function autofitIframe(id){
    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"
    }
}
</script>
</head>

<body onload="autofitIframe('contentFRM')">
Testtttttttttttttttttttttttttttt <br />
Testtttttttttttttttttttttttttttt <br />
.......................................
Testtttttttttttttttttttttttttttt <br />
Testtttttttttttttttttttttttttttt <br />
</body>
</html>



Als ik die session_start() dus weg laat dan gaat het wel goed, als ik hem erin zet gaat het in firefox nog wel goed, maar in IE gaat er dna iets fout. Ik krijg dan ook een javascript error:
Regel: 6
Teken: 1
Fout: Niet nader omschreven fout
URL: test.php

en het iframe krijgt dan ook niet de goede grootte. Die session_start() heb ik gewoon echt nodig omdat de pagina's in het iframe beveiligd moeten worden, iemand die me verder kan helpen?

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
ik denk niet dat het met session_start te maken heeft...

bekijk de bron van je iframe als de fout gegeven wordt...

volgens mij vergeet je een ; in regel 11

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:33
ooh die was me nog niet eens opvallen, maar het verhelpt het probleem niet iig :)

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 01-12 10:11

RM-rf

1 2 3 4 5 7 6 8 9

clientside scripting gaat enkel om de output, welke PHP code er eigenlijk staat is niet zo interssant omdat de browser díe niet verwerkt ...

het belangrijkste is dus de HTML-output te bekijken die je krijgt _als je die session_start() doet en in welke zin die verschilt van de normale html-ouput die wel werkt.

Tevens, staat de pagina welk op exact hetzelfde domain? als er namelijk corssdomain dit soort abfragen gedaan worden weigert javascript dat en geeft idd een foutmelding

Wat overigens ook érg belangrijk kan zijn, zie je dat in de code van je pagine met IFRAME de afsluitende </IFRAME>-tag mist?

[ Voor 32% gewijzigd door RM-rf op 24-05-2007 12:28 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Bekijk de error console eens in Firefox? ;)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:33
puur en alleen als ik al session_start() bovenaan de pagina zet werkt het al niet meer in IE, dus de output verschil 0,0 met session_start en zonder session_start. De foutconsole in firefox had ik al geprobeerd, maar ik krijg geen enkele error (het werkt ook gewoon in firefox, alleen in IE niet)...

van die sluittag van het iframe had ik ook al gezien en aangepast, maar dat mocht ook niet baten...

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
wat is dan de broncode van de pagina in het i-frame als je session_start wel uitvoert? (dus de html-code)

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:33
ja exact hetzelfde als ik session_start() niet zou uitvoeren. De bovenstaande code in test.php krijg je dan te zien zonder de volgende code:

code:
1
2
3
<?php
    session_start()
?>


de output verschilt dus helemaal niks, of ik session_start() nou wel bovenaan de pagina plaats of niet...

  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
misschien een beetje debuggen met alerts...
slash regel 11 bijvoorbeeld eens uit... en vervang dat door alert(1);
krijg je dan wel de alert? zo ja, dan zit de fout in regel 11, zo nee dan zit de fout in een andere regel... etc...

  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:33
heb het al opgelost, de fout zat em toch in de browsercheck, heb de code in test.php nu vervangen door:

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
<?php
session_start();
?>
<html>
<head>
<script type="text/javascript">
function autofitIframe(){
<?php
    $browsertype=$_SERVER["HTTP_USER_AGENT"];
    if ( strstr($browsertype, "MSIE") ) {
?>
        parent.document.getElementById("contentFrame").style.height=this.document.body.scrollHeight+"px";
<?php
    } else {
?>
        parent.document.getElementById("contentFrame").style.height=this.document.body.offsetHeight+"px";
<?php
    }
?>
}
</script>
</head>

<body onload="autofitIframe('contentFRM')">
Testtttttttttttttttttttttttttttt <br />
Testtttttttttttttttttttttttttttt <br />
.......................................
Testtttttttttttttttttttttttttttt <br />
Testtttttttttttttttttttttttttttt <br />
</body>
</html>

  • RM-rf
  • Registratie: September 2000
  • Laatst online: 01-12 10:11

RM-rf

1 2 3 4 5 7 6 8 9

avdwerf schreef op donderdag 24 mei 2007 @ 15:32:
heb het al opgelost, de fout zat em toch in de browsercheck
leuk dat iig je probleem is opgelost ...
maar het is voor de mensen hier écht niet leuk als iemand hardnekkig zit te beweren 'dat de fout ergens ligt' en hij uiteindelijk dus weigert de hele code te tonen, zodat het misschien lijkt dat de fout ligt waar hij beweert dat die ligt ...
waarna later blijkt dat de fout dus idd ergens anders lag, wat we niet konden zien met de getoonde code

als je eerder al de output-HTML-code had gepost hadden we je veel beter kunnen helpen.

Overigenms, persoonlijk vind ik het een no-go om op deze manier clientside en geparsede code te gaan vermengen (deels gewoon uit gevoel, maar praktisch omdat het ook debuggen een rottige bezigheid maakt waar je dus vanaf twee hoeken moet gaan debuggen)

mijn voorkeur zou gewoon hebben om te controleren op de waarde die je gebruikt:
JavaScript:
1
2
3
4
var contentFrame = parent.document.getElementById("contentFrame")
var scrollHeight  = this.document.body.scrollHeight
var offsetHeight = this.document.body.offsetHeight
contentFrame.style.height = ( scrollHeight  ) ? scrollHeight+"px": offsetHeight+"px";

het kan nóg wat beknopter door 'contentFrame.style.height = this.document.body.scrollHeight || this.document.body.offsetHeight te doen, maar de gepostte versie is misschien wat duidelijk hoe die werkt

het voordeel heeft dat zulk een gebruik van crossbrowser-code de beste fallback en compatibiliteit heeft, ook forward compatibiliteit (omdat het domweg controleert of de te benutten waarde daadwerkelijk bestaat en verder geen irrelevante criteria 'bijdenkt')

[ Voor 58% gewijzigd door RM-rf op 24-05-2007 16:04 ]

Intelligente mensen zoeken in tijden van crisis naar oplossingen, Idioten zoeken dan schuldigen


  • avdwerf
  • Registratie: Maart 2007
  • Laatst online: 20:33
ik snap het probleem niet helemaal, de output-HTML-code heb ik toch allang gepost?? Ik snap niet helemaal wat het probleem nu is RM-rf?
Pagina: 1