HTML链接javascript单击右键或按住Shift键执行(在新窗口/选项卡中打开)

时间:2018-07-17 23:25:34

标签: javascript html dom right-click new-window

在新窗口/标签中打开基于JavaScript的链接。

我有一个链接

<a href='/page' onclick='trackClick()'>Page</a>

我认为这里正在发生的事情是,在浏览器重定向到新页面之前,trackClick()函数可能没有足够的时间执行。 (顺便说一句:我在这里错了吗?)

要解决此问题,我将html更改为

<a href='#' onclick='trackClick('/page')'>Page</a>

在TrackClick函数向分析端点发送信号以避免竞争情况后,它将重定向到下一页。

因此,“ shift + click”或“右键单击在新窗口中打开”现在将不会在新窗口/选项卡中打开 /页面

克服此问题的最佳方法是什么? 浏览器在重定向到下一页之前不等待onclick事件完成的可能性有多大?

谢谢

1 个答案:

答案 0 :(得分:1)

简单的答案是onclick!=右键单击。

进行快速而肮脏的演示

<script>
  function leftClick() {
    alert("click");
  }

  function rightClick() {
    alert("right click");
  }

  function mouseDown() {
    alert("Mouse down");
  }

  function mouseUp() {
    alert("Mouse up");
  }
</script>
<a href="http://www.google.com" onclick="leftClick()">CLick Me</a><br>
<a href="http://www.google.com" oncontextmenu="rightClick()">Right CLick Me</a><br>
<a href="http://www.google.com" onmousedown="mouseDown()">Any Click Me</a><br>
<a href="http://www.google.com" onmouseup="mouseUp()">Any Click Me</a><br>

所以您真正想要的是:

<a href='/page' onclick='trackClick()' oncontextmenu="trackClick()">Page</a>

或者也许

<a href='/page' onmouseup='trackClick()' >Page</a> 

更好地看待使用不干扰的处理程序以及mousedownmouseup事件

  

浏览器不等待onclick事件发生的可能性   在重定向到下一页之前完成?

onclick将完成。如果您是从点击处理程序转到return false,导航将根本不会发生。 Demo