2013-10-23 106 views
3

使用JavaScript打開窗口時,可以捕獲對打開的窗口/選項卡的引用,然後可以使用該引用來查看窗口/選項卡是否已被再次關閉例如。像這樣的東西(有點人爲的例子):檢查通過錨點打開的窗口/選項卡是否已關閉

var foo = window.open('http://www.foo.bar'); 
... 
if (!foo || foo.closed) { 
    ... 

但是有可能使用錨元素來實現類似的東西嗎?舉例來說,如果我有我的網站的鏈接

<a href="http://www.foo.bar" target="_blank">Foo</a>

,是有什麼辦法可以附加一個事件監聽器,並取得到任何窗口的引用/時,這種定位的元素被觸發選項卡打開,然後在JavaScript中使用它?聆聽點擊事件可能會奏效,但還有其他方式可以更好地覆蓋它嗎? (例如,您可以選擇一個錨點元素,然後按Enter鍵將其打開,但不會註冊爲點擊事件)

+1

這可能有助於http://stackoverflow.com/questions/8927208/catching-event-when-follow-a-link – pax162

+0

好問題;我不知道但期待看到答案! –

+0

如果兩個窗口位於同一個域中,您可以通過讓子窗口在打開時將窗口對象傳遞給父窗口,來避免將任何代碼放在錨標記上。 – jbabey

回答

1

按住enter鍵同時關注錨點標記將觸發現代瀏覽器中的點擊事件處理程序。我在Chrome中測試了這個30

證明:http://jsfiddle.net/HZvPT/

所以,你的點擊處理程序將搶href屬性,調用window.open(存儲窗口的返回值),然後e.preventDefault()從執行停止錨標記它的默認行爲(這將打開第二個窗口,不好)。

+1

但據我所知,這將不適用於上下文菜單,在那裏你可以選擇打開一個新的選項卡等。不幸的是,從我可以告訴那裏似乎並沒有一個全面的「激活」事件或者在激活鏈接時瀏覽器應該派發。 –

+0

@macke true,我不確定是否有任何方式與這些右鍵單擊菜單進行交互。 – jbabey

+0

是的,我懷疑現在有什麼辦法可以做到OP要求說實話。想知道是否有! –

相關問題