親サイトとiframe-urlの両方にアクセスできる場合、ページが完全に読み込まれていることを知る方法(「同一生成元」の問題なし)は、このように子から親にメッセージ(postMessage)を送信することです。
親サイト(iframeを含む)
//Listen for message
window.addEventListener("message", function(event) {
if (event.data === "loading_success") {
//Yay
}
});
//Check whether message has come through or not
iframe_element.onload = function () {
//iframe loaded...
setTimeout(function() {
if (!iframeLoaded) {
//iframe loaded but no message from the site - URL not allowed
alert("Failure!");
}
}, 500);
};
子サイト(iframeからのURL)
parent.postMessage("loading_success", "https://the_origin_site.url/");
the_origin_site.url
複数のオリジンの可能性が必要な場合は、PHPなどのサーバーサイド言語を使用して取得できます
受け入れられた回答は、iframeに配置しようとしているドメインが、要求しているドメインと同じである場合にのみ機能します。このソリューションは、両方のドメインのスクリプトにアクセスできるクロスドメインで機能します。