【发布时间】:2020-03-17 15:06:54
【问题描述】:
在阅读了多篇 SO 帖子后,我了解到在 iFrame 上使用 javascript 的最佳(或唯一)方法是 postMessage 和 addEventListener。我在网上找到的所有示例代码都显示如下:
<div id="magazine-container">
<iframe id="iFrame" height="500" width="700" src="https://issuu.com/lideres_mexicanos/docs/351grupoaries-issuu/76"></iframe>
</div>
<script>
$(document).ready(function () {
let testString = 'MESSAGE FROM LOCALHOST';
let frame = document.getElementById('iFrame');
frame.contentWindow.postMessage(testString, '*');
window.addEventListener('message', event => {
console.log(event.data);
});
});
</script>
查看控制台,event.data 不包含变量 testString。
相反,它包含以下内容:
{"PrivacyManagerAPI":{"timestamp":1584457115641,"action":"getConsent","self":"quantserve.com","domain":"issuu.com","authority":"truste.com","type":"advertising"}}
我只是无法弄清楚这里发生了什么。
编辑
我现在明白我没有将addEventListener 附加到 iFrame,而是附加到父级。有没有办法将侦听器添加到实际的 iFrame,而无需访问 iFrame 中使用的页面的源代码?
【问题讨论】:
标签: javascript html iframe postmessage