注册点击事件并确定是否已点击A元素非常简单:
window.addEventListener('click', ()=>{
if (event.which !== 1 && event.which !== 2) // left of middle click
return
var element = event.target
if (element.tagName !== 'A') {
while(element.parentNode) {
element = element.parentNode
if (element.tagName === 'A')
break
}
if (element.tagName !== 'A')
return
}
console.log('A-Element was left clicked')
})
但是,当用户通过right click
- > open link
打开链接或使用JavaScript(window.open()
,{{1}打开链接时,我的代码无法检测到该链接},...)。
Is right click a Javascript event?无法解决我的问题,因为右键点击本身不会打开链接。
所以,我想知道是否有一个很好的方法可以找到链接打开的时间,而不仅仅是点击它。
我发现browser.tabs.onUpdated这是一个在更新标签时会被触发的事件。它虽然是扩展专属的。
答案 0 :(得分:1)
这可能会让您关闭,但它无法处理所有情况,例如右键单击并在新窗口或新选项卡中打开。基本上,如果您在新选项卡中打开任何内容,此示例将无效。但是,如果您在当前选项卡/窗口中打开任何内容,无论它是如何完成的(右键单击,window.open),它都将起作用。它是window.onbeforeunload
事件。它在从当前页面导航AWAY之前触发。
window.onbeforeunload = function () {
alert("Navigating away...");
};
答案 1 :(得分:0)
嗯,不确定这是最好的答案,但有了jQuery的event.which,这是可能的:
$('#element').mousedown(function(event) {
switch (event.which) {
case 1:
alert('Left click pressed.');
break;
case 2:
alert('Middle button pressed.');
break;
case 3:
alert('Right click pressed.');
break;
default:
alert('default');
}
});
以下代码段:
$('#link').mousedown(function(event) {
switch (event.which) {
case 1:
alert('Left click pressed.');
break;
case 2:
alert('Middle button pressed.');
break;
case 3:
alert('Right click pressed.');
break;
default:
alert('default');
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<a href="whatever.com" id="link">click to find out</a>