我想在iframe的窗口上下文中運行一些javascript。現在我能想到做到這一點的唯一方法是注入一個腳本標籤:在框架窗口的上下文中運行代碼
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>
`);
注:這是同一個域的iframe,沒有一個src,所以我必須完全進入contentWindow
。
對於我的用例來說,代碼運行正確的全局變量很重要; window
,document
等都應該作用於iframe本身。
有沒有其他辦法可以做到這一點?以上作品,但腳本需要在不同的域運行都具有不同的CSP的規則,這意味着增加了對隨機數/哈希等
支持是否有可能做這樣的事情:
myIframe.contentWindow.run(function() {
console.log('The current window name is:' window.name);
});
我我試過myIframe.contentWindow.setTimeout
,但似乎仍然在父窗口的上下文中運行代碼。
感謝您的建議 - 但我使用的情況下,我需要能夠插入任意的JavaScript到框架中,這不一定是託管在任何地方 - 因此腳本標籤。 – bluepnume