2012-12-17 65 views
0

正如我們都知道點擊iframe中的普通鏈接打開iframe中的相應頁面。現在我的問題是,是否有辦法對在iframe所在頁面上打開的新頁面做出反應。 與iframe中的頁面發生變化時觸發的iframe.onpagechange事件一樣,例如,當一個鏈接被點擊時。Iframe onpagechange事件?

有沒有這樣的事件?如果沒有,你有任何可能的方法建議?

+0

提供的HTML目標屬性機會... – yckart

+1

@yckart你似乎誤解了我的問題:我不希望打開網頁在iframe之外或其他任何地方,我想要的是以某種方式對iframe中的頁面打開作出反應。 – Wingblade

+0

你是否在控制這兩個域。即主頁和iframe中的一個?更好,他們是同一個域名嗎?如果沒有,那麼答案就不是我害怕的。如果是的話,那麼這是可能的,但沒有什麼像聽到的單一事件那麼簡單。 – Pebbl

回答

1

在這種情況下,不是不可能的,並不是所有瀏覽器都可靠。

在更現代的瀏覽器中,它們確實允許您在iframe標記本身上使用「onload」事件,並且這會在每次iframe重新加載時觸發 - 即單擊鏈接時。但是,舊版瀏覽器不支持此功能,並且有許多網站旨在突破框架。如果網站突破了框架,則會觸發未加載事件。最重要的是,因爲您正在處理的是控制/域外部的iframe,這是您可以執行的所有操作 - 告訴框架已加載 - 其他所有內容都將被阻止訪問。

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

或者更好的辦法是:

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

<script> 
    window.onload = function(){ 
    document.getElementById('frame').addEventListener('load', iframeLoaded); 
    } 
</script> 
0

正如我在我的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> 

Fiddle