繁体   English   中英

还原普通链接点击行为的用户脚本,在按住Ctrl并单击时可以在新标签页中打开

[英]Userscript to restore normal link click behavior to open in a new tab when ctrl+clicked

使用Greasemonkey或Tampermonkey,如何在thesaurus.com列出列出的同义词(作为链接)(在按住Ctrl 键的同时单击新的选项卡中,或在按住Shift键的同时单击新的窗口中打开)? 当前,它在同一选项卡中打开Ctrl +单击和Strl +单击的链接。

该网站通过附加其自己的不支持修饰键的原始click处理程序,破坏了标准的链接行为,这是一件很糟糕的事情。

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

  1. 在网站附加其自己的侦听器之前,请在window (顶级DOM对象)上附加一个单击侦听器:使用@run-at document-start元数据密钥。
  2. 为addEventListener的useCapture参数指定true ,以在从window到单击目标的捕获阶段的一开始就拦截事件。 因此,我们还增加了拦截的机会,使它冒泡到网站上使用标准的非捕获式监听器监听点击事件的元素(可能是任何东西,从aa东西到window )。
  3. 使用event.stopPropagation()可以防止随后连接的站点侦听器看到click事件。
  4. 通过在目标链接href通过#跳过具有自我重定向功能的虚拟链接,和/或将click target的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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM