Mijn situatie is dat ik een iframe element heb, die ik via javascript dynamisch vul. Dat gaat ongeveer op de manier:
Dit werkt voor de meeste content zonder problemen. Het gaat echter niet helemaal goed als ik voor 'some_content' een extern javascript aanroep dat document.write bevat.
Direct document.write gebruiken gaat wel goed. Als ik voor 'some_content' het volgende invul, dan werkt het zoals verwacht:
Zet ik nu echter die ene javascript regel in een extern bestand, b.v. write.js en herschrijf ik 'some_content' naar het volgende, dan werkt het niet:
In dit laatste geval wordt het hele document in de iframe overgeschreven (in firefox 2) door die ene regel 'text write'. Dat is in dit geval niet wat ik wil. Als ik de zelfde HTML als hierboven in een losse pagina zet en die aanroep, dan overschrijft write.js niet de gehele pagina.
Nu zegt de API documentatie van document.write, dat er inderdaad een nieuw document wordt gemaakt als de pagina al geheel geladen is. In bovenstaand geval zitten we echter nog midden in de pagina. Als ik bijvoorbeeld ten hoogte van "Na write" een javascript alert() zet, wordt deze niet uitgevoerd.
Ik probeer voornamelijk te begrijpen wat hier nu precies gebeurd. Iemand enig idee?
HTML:
1
2
3
4
5
6
7
| <iframe src="" id="cnt"></iframe> <script type="text/javascript"> window.frames['cnt'].document.open(); window.frames['cnt'].document.write( 'some_content' ); window.frames['cnt'].document.close(); </script> |
Dit werkt voor de meeste content zonder problemen. Het gaat echter niet helemaal goed als ik voor 'some_content' een extern javascript aanroep dat document.write bevat.
Direct document.write gebruiken gaat wel goed. Als ik voor 'some_content' het volgende invul, dan werkt het zoals verwacht:
HTML:
1
2
3
4
5
6
7
| <html><body> Voor write <script type="text/javascript"> document.write ( ' text write ' ); </script> Na write </body></html> |
Zet ik nu echter die ene javascript regel in een extern bestand, b.v. write.js en herschrijf ik 'some_content' naar het volgende, dan werkt het niet:
HTML:
1
2
3
4
5
| <html><body> Voor write <script type="text/javascript" src="http://myhost/write.js" ></script> Na write </body></html> |
In dit laatste geval wordt het hele document in de iframe overgeschreven (in firefox 2) door die ene regel 'text write'. Dat is in dit geval niet wat ik wil. Als ik de zelfde HTML als hierboven in een losse pagina zet en die aanroep, dan overschrijft write.js niet de gehele pagina.
Nu zegt de API documentatie van document.write, dat er inderdaad een nieuw document wordt gemaakt als de pagina al geheel geladen is. In bovenstaand geval zitten we echter nog midden in de pagina. Als ik bijvoorbeeld ten hoogte van "Na write" een javascript alert() zet, wordt deze niet uitgevoerd.
Ik probeer voornamelijk te begrijpen wat hier nu precies gebeurd. Iemand enig idee?
It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.