2017-03-06 28 views

回答

1

該網站打破了標準鏈接的行爲,這是一個非常糟糕的事情,通過將自己的原始click處理程序不支持組合鍵。

有時你可以使用jQuery('a').off('click')但一個普遍的做法是:

  1. 附上window,最上面的DOM對象點擊監聽,現場重視自己的聽衆面前:使用@run-at document-start元數據的關鍵。
  2. 指定true爲的addEventListener的將useCapture參數在捕捉階段的一開始從window到點擊目標截獲該事件。因此,我們還增加攔截的機率就氣泡到該網站click事件與標準的非捕獲聽衆收聽(可以是任何東西,從裏面的東西awindow)元素之前。
  3. 使用event.stopPropagation()可防止隨後連接的站點偵聽器看到單擊事件。
  4. href和/或通過點擊目標的CSS選擇限制內容區域保護經由#在目標鏈接跳過與自重定向虛擬鏈接合法的基於鏈接的網站的功能。

// ==UserScript== 
// @name Restore links behavior 
// @match *://www.thesaurus.com/* 
// @run-at document-start 
// ==/UserScript== 

window.addEventListener('click', function(e) { 
    var link = e.target.closest('a'); 
    //var link = e.target.closest('#content a'); // limit to the #content area 
    if (link && link.getAttribute('href') != '#') { 
     e.stopPropagation(); 
    } 
}, true); 
+0

好,但是這也將打破所需的菜單和按鈕。您應該確定鏈接的範圍以減少副作用。例如,像'if(e.target.closest('。synonyms同義詞''))'。 (具體到那個網站) –

+1

確實。在這種情況下,即使'#content a'可以工作,但是使用'#' - 檢查它顯然是不需要的。 – wOxxOm

+0

@ wOxxOm,太棒了,謝謝。我可以從中得到任何副作用嗎? –

相關問題