218

iframe のコンテンツを制御できないと仮定すると、親ページを介して src の変更を検出できる方法はありますか? ある種のオンロードでしょうか?

私の最後の手段は、iframe src が以前と同じであるかどうかを 1 秒間隔でテストすることですが、このハッキーなソリューションを実行すると最悪です。

役立つ場合は、jQuery ライブラリを使用しています。

4

7 に答える 7

229

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>
于 2010-03-11T22:10:50.230 に答える
59

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

于 2012-10-22T14:01:18.397 に答える
7

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);
    }
于 2016-10-05T09:21:05.563 に答える