[英]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')
但通用方法是:
window
(顶级DOM对象)上附加一个单击侦听器:使用@run-at document-start
元数据密钥。 true
,以在从window
到单击目标的捕获阶段的一开始就拦截事件。 因此,我们还增加了拦截的机会,使它冒泡到网站上使用标准的非捕获式监听器监听点击事件的元素(可能是任何东西,从a
内a
东西到window
)。 event.stopPropagation()
可以防止随后连接的站点侦听器看到click事件。 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.