Ik moet voor een bestaande webapplicatie die gebruik maakt van iframes javascript functies uitvoeren in een specifieke window context. Dit gaat prima in alle browsers behalve Firefox. Ter illustratie de twee volgende bestanden:
test.html
test2.html
Het probleem is dat de JSON.parse niet in de context van het binnenste iframe gebeurt, waardoor de uitgepakte array niet instanceof Array is volgens het binnenste venster.
In de webapplicatie is het zo dat er in de iframes functies zitten die al geparsede data verwachten en ik enkel de functies in het buitenste frame kan aanpassen. Ik moet dus op de een of andere manier de JSON.parse methode kunnen aanroepen zodat de Array wordt geconstruct in de context van dat iframe.
Ik kan op google niets vinden over dit probleem, waarschijnlijk is dit doordat ik niet goed weet waarop te zoeken.
test.html
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| <!DOCTYPE HTML> <html> <head> <title>Outer frame</title> <script type="application/javascript"> var serialized = "[1,2,3]"; window.addEventListener('load', function() { var win = document.getElementsByTagName('iframe').item(0).contentWindow; var res = win.JSON.parse(serialized); console.log(res instanceof Array); win.isThisAnArray(res); }, false); </script> </head> <body> <div>This content comes from the outer frame</div> <iframe src="test2.html"></iframe> </body> </html> |
test2.html
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| <!DOCTYPE HTML> <html> <head> <title>Inner frame</title> <script type="application/javascript"> function isThisAnArray(arr) { console.log(arr instanceof Array); } </script> </head> <body> <div>This content comes from the inner frame</div> </body> </html> |
Het probleem is dat de JSON.parse niet in de context van het binnenste iframe gebeurt, waardoor de uitgepakte array niet instanceof Array is volgens het binnenste venster.
In de webapplicatie is het zo dat er in de iframes functies zitten die al geparsede data verwachten en ik enkel de functies in het buitenste frame kan aanpassen. Ik moet dus op de een of andere manier de JSON.parse methode kunnen aanroepen zodat de Array wordt geconstruct in de context van dat iframe.
Ik kan op google niets vinden over dit probleem, waarschijnlijk is dit doordat ik niet goed weet waarop te zoeken.
Ik ontken het bestaan van IE.