postMessage
也适用于iframe
s 之间;假设工人和框架之间的行为是相同的,你应该尝试以下或类似的东西:
<html>
<body>
<iframe id='if'>
</iframe>
<script>
var iframe = document.getElementById('if');
var iframeScript = iframe.contentDocument.createElement("script");
iframeScript.appendChild(
iframe.contentDocument.createTextNode(
'window.addEventListener("message", function(e) {console.log(e.data);}); console.log("listener attached");'));
iframe.contentDocument.body.appendChild(iframeScript);
iframe.contentWindow.postMessage("asdf", "*");
iframe.contentWindow.postMessage({'whatAmI': 'an object, maybe?'}, "*");
</script>
</body>
</html>
您可能需要替换 console 或 console.log 才能看到结果,但在 Chrome 上,这让我
listener attached about:blank (1):1
asdf about:blank (1):1
Object {whatAmI: "an object, maybe?"} about:blank (1):1
当我将它保存到本地文件并打开它时。
jsfiddle 版本(以及使用实际工作人员的版本)留给读者作为练习。:)