Je suis d'essayer de créer une <iframe> à l'aide de JavaScript, puis ajoutez un élément <script> à <iframe>, que je tiens à exécuter dans le contexte de l' <iframe>d document.
Malheureusement, il semble que je suis en train de faire quelque chose de mal - mon JavaScript semble s'exécuter, mais le contexte de l' <script> est le parent de la page, pas le <iframe>d document. J'ai aussi une 301 Erreur dans Firebug de l'onglet "Net" lorsque le navigateur demande iframe_test.js, mais il demande ensuite à nouveau (je ne sais pas pourquoi?) avec succès.
C'est le code que j'utilise (démonstration en direct à http://onespot.wsj.com/static/iframe_test.html):
iframe_test.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title><iframe> test</title>
</head>
<body>
<div id="bucket"></div>
<script type="text/javascript" src="http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#bucket').append('<iframe id="test"></iframe>');
setTimeout(function() {
var iframe_body = $('#test').contents().find('body');
iframe_body.append('<scr' + 'ipt type="text/javascript" src="http://onespot.wsj.com/static/iframe_test.js"></scr' + 'ipt>');
}, 100);
});
</script>
</body>
</html>
iframe_test.js
$(function() {
var test = '<p>Shouldn\'t this be inside the <iframe>?</p>';
$('body').append(test);
});
Une chose qui semble inhabituel, c'est que le code dans iframe_test.js fonctionne même; je n'ai pas de chargement de jQuery dans les <iframe> lui-même, uniquement dans le document parent. Cela semble être une idée à moi, mais je ne peux pas comprendre ce que ça signifie.
Des idées, des suggestions, etc. serait bien apprécié!