2017-10-20 57 views
0

我只是想阻止打開時點擊一個鏈接一個新的頁面(也可能是IMG或按鈕)。這裏是我的「內容scripts.js中」代碼:鉻分機/ JavaScript的如何讓網頁上的所有鏈接都沒有效果?

document.onclick = function() { 
    return false; 
} 

它可以工作,但有時不工作,我不知道爲什麼。當我點擊網頁上的一些元素時,它仍然會打開另一個網址。

+0

如果下面的答案*回答了您的問題,Stack Overflow的工作方式,您可以通過單擊旁邊的複選標記來「接受」答案,該答案會將其從未答覆的問題列表中刪除; [詳細信息](/ help/someone-answers)。但是,只有當你的問題得到真正的答覆。 –

+0

我對JavaScript沒有太多瞭解。其實我只是想阻止打開由點擊發起的新網頁(無論是觸發或腳本),我不在乎這個頁面會發生什麼。你可以幫我嗎? – pang

回答

0

它並不總是工作,因爲點擊可不能讓它一路document,它就會有前冒泡可能會被取消。

做你做什麼,你必須對掛鉤click爲DOM修改頁面的每一個元素,列表,以便您可以勾上新的元素click如果他們添加到頁面。

來處理所有的元素,你可以走遞歸DOM樹或通過document.querySelectorAll("*")得到一個潛在的,巨大的列表。

要監聽的DOM修改,這樣你就可以吸引新的元素,因爲它們可以增加,你會想要一個mutation observer

因爲其他JavaScript代碼可能會覆蓋你的onclick,我會使用addEventListener代替,都停止傳播,並立即停止傳播:

function stopEvent(e) { 
    e.stopPropagation(); 
    e.stopImmediatePropagation(); 
    e.preventDefault(); 
} 
someElement.addEventListener("click", stopEvent); 

因此,舉例來說,大致有:

function stopEvent(e) { 
    e.stopPropagation(); 
    e.stopImmediatePropagation(); 
    e.preventDefault(); 
} 
document.querySelectorAll("*").forEach(function(element) { 
    element.addEventListener("click", stopEvent); 
}); 

。然後使用突變觀察者來處理新添加的元素。

相關問題