私はこのようなスクリプトを持っています
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ページでアラートが1つだけ表示されますが、iframeページ内にリンクがあり、2番目のページに移動すると2つのアラートが表示され、3番目のページに移動すると3つのアラートが表示され、4番目のリンクが4つのアラートをトリガーします。 ..。。
各iframedページで、次のようにサイズを変更するために親を呼び出しています。
<body class="settingspage" onload="parent.postMessage(document.body.scrollHeight, '<?php echo $_SESSION['SESS_ACCESSING_FROM']; ?>');">
「イベント」配列をクリアしようとしましたが、それでもアラートが表示されますが、今回は空ですが、アラートの数はiframe内のリンククリックの数と同じですか?
どうしてこれなの ?