Javascript 在Firefox中,双击href设置为#但onclick设置为转到另一个页面的标签将有效地使我们保持在当前页面上

Javascript 在Firefox中,双击href设置为#但onclick设置为转到另一个页面的标签将有效地使我们保持在当前页面上,javascript,firefox,anchor,double-click,Javascript,Firefox,Anchor,Double Click,假设我们有ff。在a.html中: <script> function onClick() { // Do some important stuff and then... location = "b.html"; } </script> <a href="#" onclick="onClick();">Link</a> 函数onClick(){ //做一些重要的事情然后。。。 location=“b.html”; }

假设我们有ff。在a.html中:

<script>
  function onClick() {
    // Do some important stuff and then...
    location = "b.html";
  }
</script>
<a href="#" onclick="onClick();">Link</a>

函数onClick(){
//做一些重要的事情然后。。。
location=“b.html”;
}
双击链接将触发事件处理程序onClick。但是,双击中的第二次单击似乎被解释为另一次单击,并导致页面跳转到指定的锚。实际上,位置没有改变

我的问题是:

  • 这是一个浏览器错误还是功能

  • 有没有办法解决这种行为

  • 你可以试试

    href="javascript:void(0);"
    

    相反

    使用
    window.location=“b.html”
    <代码>位置本身没有特殊意义

    起锚是无关的。您可以通过停止事件来禁用它

    function onClick(event) {
      event.preventDefault();
      event.stopPropagation();
    }
    
    <a href="#" onclick="onClick(event)">Link</a>
    
    函数onClick(事件){
    event.preventDefault();
    event.stopPropagation();
    }
    
    gshankar是对的

    另一种变体:

    <script>
      function onClick() {
        location = "b.html";
        return false;
      }
    </script>
    <a href="#" onclick="return onClick();">Link</a>
    
    
    函数onClick(){
    location=“b.html”;
    返回false;
    }
    
    或者您可以将链接指向函数并跳过onclick事件:

    <script>
      function onClick() {
        location = "b.html";
        return false;
      }
    </script>
    <a href="javascript:onClick();">Link</a>
    
    
    函数onClick(){
    location=“b.html”;
    返回false;
    }
    
    副作用:链接从未标记为已访问,但由于它们的外观类似于按钮,所以这没关系。没有提到我正在修复自定义标记。用户可能希望在其单击处理程序中使用“this”。我认为“this”在“href”attrib中表示其他内容。
    窗口是全局对象。这意味着当自己编写时,
    location
    在全局范围内可用。这与
    窗口位置相同。这就是为什么如果你愿意,你也可以做
    window.window.window.location
    。实际上,您在代码中对
    事件
    执行相同的操作。它位于全局范围内,因此可以使用
    window.event
    访问。此外,您的答案缺少
    返回false旧浏览器的变体,以及
    onclick=“return onclick(event);”