は、私はそれが何をするか、このHTML5のメッセージング複数のインスタンス
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アラート
<body class="settingspage" onload="parent.postMessage(document.body.scrollHeight, '<?php echo $_SESSION['SESS_ACCESSING_FROM']; ?>');">
私は「イベント」配列を消去しようとしましたが、私はまだ警告を得るが、この時間は、彼らは空ですが、私は次のようにサイズを変更する親を呼び出しています各iframeをページで...
アラートの数はiframe内のリンククリック数に等しいか?
これはなぜですか?
...「負荷のメインページ本体」に機能を移動するとiframeからそれを削除することによって、これを解決? – FoolishSeth
@FoolishSeth関数自体は他のドメインにあります(私は両方のドメインにアクセスできます)が、ドメイン間のメッセージングであるため、ロード時に各iframe本体で呼び出されます。だから、最初の "フレームの読み込み"では、すべてが正しく表示されますが、iframe内のリンクをクリックすることでユーザーの進捗状況が表示されます(1回のクリックでiframe = 1のアラート、2回のクリック= 2のアラート、15クリック= 15アラートなど)。 – Peter