当ctrl +单击时,用户脚本恢复正常链接点击行为以在新选项卡中打开

时间:2017-03-06 20:25:20

标签: javascript greasemonkey tampermonkey

使用的Greasemonkey或Tampermonkey,我怎样才能列出在thesaurus.com开放同义词(它们是链接)在新标签时控制 +点击,或新窗口时 +点击?目前,它会在同一个标​​签页中打开 Ctrl + clicked和 Strl +点击的链接。

1 个答案:

答案 0 :(得分:1)

该网站通过附加不支持修饰键的原始click处理程序来打破标准链接行为,这是一件非常糟糕的事情。

有时您可以使用jQuery('a').off('click'),但通用方法是:

  1. 在网站附加自己的侦听器之前,在最顶层的DOM对象window上附加一个点击侦听器:使用@run-at document-start元数据键。
  2. 为addEventListener的 useCapture 参数指定true,以便在捕获阶段开始时从window拦截事件到点击目标。因此,在 bubbles 到网站侦听点击事件的元素(可以是任何内容,从awindow内的内容)之前,我们还会增加拦截的机会。标准的非捕获侦听器。
  3. 使用event.stopPropagation()阻止随后附加的网站侦听器看到点击事件。
  4. 通过目标链接#中的href跳过具有自重定向的虚拟链接和/或通过将点击目标的CSS选择器限制为内容区域来保护基于链接的合法网站功能。 / LI>

    // ==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);