1

編集:

次のように修正しました。高さと幅をゼロに設定して iframe を非表示にします。

<iframe frameborder="0" id="frm" height="0" width="0"></iframe>

var frmurl ='http://www.bbc.co.uk';

jQuery(function($){
        $('#frm').attr('src', frmurl);
        var doc = $('#frm')[0].contentDocument;
        $(doc.body).html('This text should replace the BBC website');  
});

私の Web サイトは、データベース内のレコードを更新し、確認メッセージを表示するために、サード パーティのシステムに依存しています。サードパーティ システムへのアクセスは、iFrame 経由です。確認メッセージを独自のものに置き換えたい。

私は jQuery を使用しており、サード パーティ システムによって生成された確認メッセージによって上書きされる前に、置換テキストが非常に短時間表示されることを除いて、iFrame は正しく機能しています。この jsFiddle で例を見ることができます。

自分のテキストが上書きされないようにするにはどうすればよいですか? ページが生成される一連のイベントに関係していると思いますか?

<iframe frameborder="0" id="frm" scrolling="no" width="100%"></iframe>

var frmurl ='http://www.bbc.co.uk';

jQuery(function($){
        $('#frm').attr('src', frmurl);
        var doc = $('#frm')[0].contentDocument;
        $(doc.body).html('This text should replace the BBC website');   
});
4

2 に答える 2

1

IFRAME の読み込みは非同期です。次のように、やりたいことを実行できる場合があります。

jQuery(function($){
        $('#frm').attr('src', frmurl).load(function() {
            var doc = $(this)[0].contentDocument;
            $(doc.body).html('This text should replace the BBC website');
        });  
});

これは、IFRAME が読み込まれるまで待機してから、変更を試みます。

ただし、これが許可されるかどうかはわかりません。別のドメインから読み込まれた IFRAME のコンテンツを操作することは許可されていません。

アップデート:

私は正しかった、それは動作しません。このフィドルとコンソールログを試しました:

"http://fiddle.jshell.net"origin を持つフレームが originを持つフレームにアクセスするのをブロックしました"http://www.bbc.co.uk"。プロトコル、ドメイン、およびポートが一致する必要があります。

あなたがやろうとしていることをすることは許されていません。

于 2013-09-02T14:22:12.967 に答える
0

<iframe>「src」プロパティの更新は、基本的に、指定された URL から取得したコンテンツでブラウザがフレームを更新するという明示的な要求です。したがって、ブラウザにそれを行うことと行わないことの両方を要求することは、実際には意味がありません:)

ただし、できることは、メッセージを の代わりに別の場所に置くことです<iframe>。HTTP トランザクションは<iframe>が表示されているかどうかに関係なく機能するため、ユーザーに結果を表示させたくない場合は、<iframe>CSS などを介して非表示にすることができます。

于 2013-09-02T14:58:01.627 に答える