iframe のコンテンツを制御できないと仮定すると、親ページを介して src の変更を検出できる方法はありますか? ある種のオンロードでしょうか?
私の最後の手段は、iframe src が以前と同じであるかどうかを 1 秒間隔でテストすることですが、このハッキーなソリューションを実行すると最悪です。
役立つ場合は、jQuery ライブラリを使用しています。
iframe のコンテンツを制御できないと仮定すると、親ページを介して src の変更を検出できる方法はありますか? ある種のオンロードでしょうか?
私の最後の手段は、iframe src が以前と同じであるかどうかを 1 秒間隔でテストすることですが、このハッキーなソリューションを実行すると最悪です。
役立つ場合は、jQuery ライブラリを使用しています。
onLoad
次の例のように、イベントを使用できます。
<iframe src="http://www.google.com/" onLoad="alert('Test');"></iframe>
iframe 内の場所が変更されるたびに、アラートがポップアップ表示されます。最新のすべてのブラウザで動作しますが、IE5 や初期の Opera などの非常に古いブラウザでは動作しない場合があります。(ソース)
iframe が親の同じドメイン内のページを表示している場合contentWindow.location
、次の例のように、を使用してその場所にアクセスできます。
<iframe src="/test.html" onLoad="alert(this.contentWindow.location);"></iframe>
JQuery < 3 に基づく回答
$('#iframeid').load(function(){
alert('frame has (re)loaded');
});
subharb が述べたように、JQuery 3.0 以降では、これを次のように変更する必要があります。
$('#iframe').on('load', function() {
alert('frame has (re)loaded ');
});
https://jquery.com/upgrade-guide/3.0/#breaking-change-load-unload-and-error-removed
iframe は常に親ページを保持します。これを使用して、iframe 内のどのページにいるかを検出する必要があります。
HTML コード:
<iframe id="iframe" frameborder="0" scrolling="no" onload="resizeIframe(this)" width="100%" src="www.google.com"></iframe>
J:
function resizeIframe(obj) {
alert(obj.contentWindow.location.pathname);
}