3

Web ページのサードパーティ スクリプトが iframe を作成します。DOM を操作できるように、この iframe の準備ができていることを知る必要があります。

私はハックなアプローチを考えることができます: iFrame の DOM を繰り返し変更しようとし、行った変更が 2 回の試行の間に固執した場合に成功を返します。これが機能するためには、iframe で繰り返し確認できるプロパティを希望します。

iframe の準備ができていることを知るための代替のクロスブラウザーイベントアプローチはありますか? たとえば、onLoad 関数を再定義してコードを呼び出すことができます (ただし、iframe を作成していないため、これを実行できるかどうかはわかりません)。

4

5 に答える 5

2

jqueryを使用していますか?

function callIframe(url, callback) {
    $(document.body).append('<IFRAME id="myId" ...>');
    $('iframe#myId').attr('src', url);

    $('iframe#myId').load(function() 
    {
        callback(this);
    });
}

動的に挿入された iframe の jQuery .ready で回答された質問

于 2010-02-17T02:06:58.067 に答える
1

親に変数がある:

var setToLoad = false;

それを設定する関数でフォローアップします。

function SetToLoad() {
    setToLoad = true;
}

次に、子 iframe で window.opener を使用してこの関数を呼び出します

function CallSetToLoad() {
    window.opener.SetToLoad();
}

window.onload = CallSetToLoad;

これは、iframe の読み込みが完了するまで実行されません。同じドメイン内にある場合は、オープナーへのアクセスが許可されます。これには、サード パーティのスクリプトの一部を編集する必要があります。

編集:代替ソリューション

スクリプトを編集できない場合は、次のようにしてみてください。

frames["myiframe"].onload = function()
{
    // do your stuff here
}
于 2010-02-16T01:48:12.380 に答える
0

最初: 他のドメインから html をロードするときに、その dom を操作できない可能性があります。

そして、おそらくDOMreadyに興味があるでしょう。ここを見てください: 動的に挿入されたiframeのjQuery .ready

于 2010-02-16T08:06:43.523 に答える
0

iframe に任意のスクリプト コードを挿入できますか? その場合、親ページのコードを呼び出す iframe の読み込み時に iframe で一部のコードが実行されるようにすることができるはずです。

于 2010-02-16T01:41:50.633 に答える
0

ビラル、

確認できる document.readyState プロパティがあります (IE で動作します)。

foo(){
 if([your iframe id].document.readyState != "complete")
 {
   setTimeout("foo()", 500); //wait 500 ms then call foo
 }
 else
 {
   //iframe doc is ready
 }
}

アルカディ

于 2011-03-28T19:25:11.270 に答える