2016-03-19 114 views
0

我試圖瞭解以下行爲。錨目標_blank被瀏覽器阻止

我創建了一個簡單的錨標記:

<a href="/example/link" target="_blank"> 
    <img src="/images/layout_open.png"> 
    <span class="open-new-tab">Open in new tab</span> 
</a> 

更新:這些<a>標籤是異步創建。在AJAX請求後,JS會創建<a>標籤。

問題是Google Chrome會阻止打開選項卡,就好像它是一個阻礙彈出窗口。

我該如何避免這種行爲? 我已閱讀其他StackOverflow問題,我可以添加<a>標記數據屬性,並通過jQuery將事件綁定到它並使用JS我可以打開一個新窗口。

我不明白的是爲什麼在我的例子中它不工作,並在其他網站沒有被阻止。它鏈接到相同的域和主機。

我得出結論可能是因爲當我按span或img時,事件將在冒泡階段被觸發,那麼它不是直接動作,而是間接動作。

這是什麼原因,我該如何避免它?

感謝

更新:

我想我已經找到了解決辦法。問題是,圖像有一個onclick事件附加到它我以前沒有。就像這樣:

<a href="/example/link" target="_blank"> 
    <img src="/images/layout_open.png" onclick="showFullImage()"> 
    <span class="open-new-tab">Open in new tab</span> 
</a> 

我還沒有嘗試過這個,但作爲@Siderite建議,阻止是不規則的瀏覽器行爲。所以我認爲Google Chrome會將此標記爲間接行爲。

我會嘗試明天,讓你知道在更新nr。 2

謝謝大家

+1

它應該沒有問題。 –

+1

你是否用代碼點擊它,而不是用戶操作? – epascarello

+0

單擊圖像或跨度後。我不通過Javascript單擊調用點擊事件。 –

回答

2

這不是一個瀏覽器的正常行爲,但更可能是試圖積極阻止彈出窗口的延伸。

轉到chrome:// extensions/url來檢查您的Chrome擴展程序。

+0

我的問題已更新。 –

+0

我的回答站立。不管DOM如何改變,最終你都有一個包含圖像和跨度的錨點元素。點擊它應該打開另一個窗口或標籤中的頁面。這是瀏覽器的默認和非常基本的功能。因此,無論是否有擴展功能阻止它,或者您點擊它時都會執行一些Javascript代碼,並且這些代碼被阻止。 –

+0

我和Siderite站在一起。請停用所有擴展程序並嘗試運行您的代碼。 – IzzyCooper