Ich möchte etwas Javascript im Kontext eines Iframe-Fensters ausführen. Im Augenblick ist die einzige Möglichkeit, die ich denken kann, das zu tun ist ein Skript-Tag zu injizieren:Code im Kontext des Frame-Fensters ausführen
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>
`);
Hinweis: Dies ist ein gleich Domain iframe, ohne src, so habe ich vollen Zugriff auf die contentWindow
.
Es ist wichtig für meinen Anwendungsfall, dass der Code mit den richtigen Globals ausgeführt wird; window
, document
usw. sollten alle auf den iframe selbst beschränkt sein.
Gibt es eine andere Möglichkeit, das kann ich tun? Die oben genannten Arbeiten, aber das Skript muss auf verschiedenen Domänen alle mit unterschiedlichen CSP Regeln laufen, die Stützmittel für das Hinzufügen Nonces/Hashes usw.
Ist es möglich, so etwas wie zu tun:
myIframe.contentWindow.run(function() {
console.log('The current window name is:' window.name);
});
I‘ habe versucht, myIframe.contentWindow.setTimeout
, aber das scheint immer noch den Code im Kontext des übergeordneten Fensters ausführen.
Danke für die Anregung - aber für meinen Anwendungsfall, ich muss in der Lage sein einfügen Beliebiges Javascript in den Frame, der nicht unbedingt irgendwo gehostet wird - daher das Script-Tag. – bluepnume