Je voudrais exécuter du javascript dans le contexte d'une fenêtre iframe. En ce moment, la seule façon que je peux penser à faire est d'injecter une balise de script:Exécuter le code dans le contexte de la fenêtre frame
myIframe = document.createElement('iframe');
myIframe.setAttribute('name', 'xyz123');
document.body.appendChild(myIframe);
myIframe.contentWindow.document.write(`
<script>
console.log('The current window name is:', window.name);
</script>
`);
Note: Ceci est un iframe même domaine, sans Src, donc j'avoir un accès complet à la contentWindow
.
Il est important pour mon utilisation que le code fonctionne avec les globals corrects; window
, document
etc devraient tous être portée à l'iframe lui-même.
Y at-il un autre moyen de le faire? Les travaux ci-dessus, mais le script doit fonctionner sur différents domaines toutes les règles de CSP différentes, ce qui signifie l'ajout du support pour nonces/hash etc.
Est-il possible de faire quelque chose comme:
myIframe.contentWindow.run(function() {
console.log('The current window name is:' window.name);
});
Je J'ai essayé myIframe.contentWindow.setTimeout
mais cela semble toujours exécuter le code dans le contexte de la fenêtre parente.
Merci pour la suggestion - mais pour mon cas d'utilisation, je dois pouvoir insérer javascript arbitraire dans le cadre, qui n'est pas nécessairement hébergé n'importe où - d'où le tag de script. – bluepnume