正如我們都知道點擊iframe中的普通鏈接打開iframe中的相應頁面。現在我的問題是,是否有辦法對在iframe所在頁面上打開的新頁面做出反應。 與iframe中的頁面發生變化時觸發的iframe.onpagechange事件一樣,例如,當一個鏈接被點擊時。Iframe onpagechange事件?
有沒有這樣的事件?如果沒有,你有任何可能的方法建議?
正如我們都知道點擊iframe中的普通鏈接打開iframe中的相應頁面。現在我的問題是,是否有辦法對在iframe所在頁面上打開的新頁面做出反應。 與iframe中的頁面發生變化時觸發的iframe.onpagechange事件一樣,例如,當一個鏈接被點擊時。Iframe onpagechange事件?
有沒有這樣的事件?如果沒有,你有任何可能的方法建議?
在這種情況下,不是不可能的,並不是所有瀏覽器都可靠。
在更現代的瀏覽器中,它們確實允許您在iframe標記本身上使用「onload」事件,並且這會在每次iframe重新加載時觸發 - 即單擊鏈接時。但是,舊版瀏覽器不支持此功能,並且有許多網站旨在突破框架。如果網站突破了框架,則會觸發未加載事件。最重要的是,因爲您正在處理的是控制/域外部的iframe,這是您可以執行的所有操作 - 告訴框架已加載 - 其他所有內容都將被阻止訪問。
<iframe onload="iframeLoaded()" src="..." />
或者更好的辦法是:
<iframe id="frame" src="..." />
<script>
window.onload = function(){
document.getElementById('frame').addEventListener('load', iframeLoaded);
}
</script>
正如我在我的comment,中所說的給html目標屬性一個機會。在javascripts open
函數中使用它。
的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>
提供的HTML目標屬性機會... – yckart
@yckart你似乎誤解了我的問題:我不希望打開網頁在iframe之外或其他任何地方,我想要的是以某種方式對iframe中的頁面打開作出反應。 – Wingblade
你是否在控制這兩個域。即主頁和iframe中的一個?更好,他們是同一個域名嗎?如果沒有,那麼答案就不是我害怕的。如果是的話,那麼這是可能的,但沒有什麼像聽到的單一事件那麼簡單。 – Pebbl