ご存じのとおり、iframe 内の通常のリンクをクリックすると、iframe 内のそれぞれのページが開きます。今私の質問は、iframe が含まれているページで開かれている新しいページに反応する方法があるかどうかです。リンクがクリックされたときなど、iframe 内のページが変更されるたびに発生する iframe.onpagechange イベントと同様です。
そのようなイベントはありますか?そうでない場合、可能なアプローチについて何か提案はありますか?
ご存じのとおり、iframe 内の通常のリンクをクリックすると、iframe 内のそれぞれのページが開きます。今私の質問は、iframe が含まれているページで開かれている新しいページに反応する方法があるかどうかです。リンクがクリックされたときなど、iframe 内のページが変更されるたびに発生する iframe.onpagechange イベントと同様です。
そのようなイベントはありますか?そうでない場合、可能なアプローチについて何か提案はありますか?
その場合、それは不可能であり、すべてのブラウザーで信頼できるわけではありません。
最新のブラウザーでは、iframe タグ自体で「onload」イベントを使用できます。これは、iframe がリロードされるたびに (つまり、リンクがクリックされたときに) トリガーされます。ただし、これは古いブラウザーではサポートされておらず、フレームから抜け出すように設計された Web サイトが数多くあります。サイトがフレームから外れると、ロード イベントがトリガーされません。これに加えて、コントロール/ドメイン外の iframe を扱っているため、フレームがロードされたことを伝えるだけで、他のすべてがアクセスからブロックされます。
<iframe onload="iframeLoaded()" src="..." />
または、より良いアプローチは次のとおりです。
<iframe id="frame" src="..." />
<script>
window.onload = function(){
document.getElementById('frame').addEventListener('load', iframeLoaded);
}
</script>
コメントで述べたように、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>