0

ご存じのとおり、iframe 内の通常のリンクをクリックすると、iframe 内のそれぞれのページが開きます。今私の質問は、iframe が含まれているページで開かれている新しいページに反応する方法があるかどうかです。リンクがクリックされたときなど、iframe 内のページが変更されるたびに発生する iframe.onpagechange イベントと同様です。

そのようなイベントはありますか?そうでない場合、可能なアプローチについて何か提案はありますか?

4

2 に答える 2

1

その場合、それは不可能であり、すべてのブラウザーで信頼できるわけではありません。

最新のブラウザーでは、iframe タグ自体で「onload」イベントを使用できます。これは、iframe がリロードされるたびに (つまり、リンクがクリックされたときに) トリガーされます。ただし、これは古いブラウザーではサポートされておらず、フレームから抜け出すように設計された Web サイトが数多くあります。サイトがフレームから外れると、ロード イベントがトリガーされません。これに加えて、コントロール/ドメイン外の iframe を扱っているため、フレームがロードされたことを伝えるだけで、他のすべてがアクセスからブロックされます。

<iframe onload="iframeLoaded()" src="..." />

または、より良いアプローチは次のとおりです。

<iframe id="frame" src="..." />

<script>
  window.onload = function(){
    document.getElementById('frame').addEventListener('load', iframeLoaded);
  }
</script>
于 2012-12-17T17:06:00.240 に答える
0

コメントで述べたように、html ターゲット属性にチャンスを与えてください。javascriptsopen関数のコンテキストで使用します。

iframe: HTML

<a href="http://yckart.com">Link</a>

Iframe: JS

$('a').on('click', function() {
    var target = this.href;
    window.open(target, "_parent");
    return false;
});

ページ: HTML

<iframe src="http://fiddle.jshell.net/CGuHR/13/show"></iframe>

フィドル

于 2012-12-17T15:51:36.637 に答える