在新窗口/选项卡中打开基于JavaScript的链接。
我有一个链接
<a href='/page' onclick='trackClick()'>Page</a>
我认为这里发生的情况是,在浏览器重定向到新页面之前,trackClick()函数可能没有足够的时间执行。(顺便说一句:我说错了吗?)
为了解决这个问题,我将html改为
<a href='#' onclick='trackClick('/page')'>Page</a>
其中,trackClick函数将在向分析端点发送信号以避免竞争条件后重定向到下一页。
因此,"shift+click“或"right+click在新窗口中打开”现在不会在新窗口/选项卡中打开/page。
克服这个问题的最好方法是什么?浏览器在重定向到下一个页面之前不等待onclick事件完成的可能性有多大?
谢谢
发布于 2018-07-18 08:19:55
简短的答案是,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
https://stackoverflow.com/questions/51391481
复制相似问题