【问题标题】:Chrome: "open link in new tab" not firing the click event?Chrome:“在新标签中打开链接”没有触发点击事件?
【发布时间】:2011-05-10 09:47:59
【问题描述】:

我正在开发一个 Chrome 扩展程序,当在网页中单击 <td> 标记时会执行一些操作。

这里有一些示例代码:

HTML:

<table>
    <tr>
        <td id="mytest"><a href="http://blablabla.com">Foo Bar</a></td>
    </tr>
</table>

Javascript:

var myTd = document.getElementById("mytest");
myTd.addEventListener("click", function() {
    localStorage["foobar"] = 1;
});

当我单击链接时,设置了localStorage 键,如果我用鼠标中键单击它,它也会设置键(并在新选项卡中打开链接)。

问题是当我使用右键单击并“在新选项卡中打开链接”时。在这种情况下,似乎没有触发 click 事件,因此不会设置 localStorage 键。

我错过了什么吗?有什么办法可以让右键->“在新标签页打开链接”触发点击事件?

请注意,我不想将侦听器添加到 &lt;a&gt; 节点,因为我正在处理的真实 HTML 中存在一些复杂性。

【问题讨论】:

    标签: javascript google-chrome dom-events


    【解决方案1】:

    好问题...

    浏览器没有右键事件,chrome发送事件mousedown、mouseup和contextmenu,

    我发现以下网页非常有用,虽然我没有检查右键部分,但事件链的一般描述非常忠实。

    快速参考:http://unixpapa.com/js/mouse.html

    【讨论】:

    • 虽然这个答案不能直接解决我的问题,但该链接为我提供了一个很好的解决方法的信息。谢谢!
    【解决方案2】:

    使用 mousedown 事件 代替 click

    var myTd = document.getElementById("mytest");
    myTd.addEventListener("mousedown", function() {
        localStorage["foobar"] = 1;
    });
    

    这样即使用户选择“在新标签页中打开链接”,它仍然有效

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 2016-03-28
      • 2015-05-17
      • 2019-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多