我有一个这样的脚本
function resizeCrossDomainIframe(id, other_domain) {
var iframe = document.getElementById(id);
window.addEventListener('message', function (event) {
if (event.origin !== other_domain) return; // only accept messages from the specified domain
if (event.data === "reload") top.location.reload(); // If child page sends reload request - reload it without any questions asked
if (isNaN(event.data)) { //If this isn't integer than it is alert
alert(event.data); // Show alert if not integer
} else {
var height = parseInt(event.data) + 5; // add some extra height to avoid scrollbar
iframe.height = height + "px";
alert(event.data);
}
}, false);
}
它所做的是动态调整 iframe 的大小。现在在第一个 iframe 页面上,我只收到一个警报,但在 iframe 页面中,我有链接,当我转到第二页时,我看到 2 个警报,当我转到第三页时 - 我收到 3 个警报,第 4 个链接触发 4 个警报等...
在每个 iframed 页面中,我都调用 parent 来调整大小,例如:
<body class="settingspage" onload="parent.postMessage(document.body.scrollHeight, '<?php echo $_SESSION['SESS_ACCESSING_FROM']; ?>');">
我试图清除“事件”数组,但我仍然得到警报,但这次它们是空的,但警报的数量等于 iframe 内的链接点击次数?
为什么是这样 ?