在新窗口/标签中打开基于JavaScript的链接。
我有一个链接
<a href='/page' onclick='trackClick()'>Page</a>
我认为这里正在发生的事情是,在浏览器重定向到新页面之前,trackClick()函数可能没有足够的时间执行。 (顺便说一句:我在这里错了吗?)
要解决此问题,我将html更改为
<a href='#' onclick='trackClick('/page')'>Page</a>
在TrackClick函数向分析端点发送信号以避免竞争情况后,它将重定向到下一页。
因此,“ shift + click”或“右键单击在新窗口中打开”现在将不会在新窗口/选项卡中打开 /页面。
克服此问题的最佳方法是什么? 浏览器在重定向到下一页之前不等待onclick事件完成的可能性有多大?
谢谢
答案 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>
更好地看待使用不干扰的处理程序以及mousedown和mouseup事件
浏览器不等待onclick事件发生的可能性 在重定向到下一页之前完成?
onclick
将完成。如果您是从点击处理程序转到return false
,导航将根本不会发生。 Demo