如果“点击”事件失败,如何防止发布“a”链接?

时间:2018-01-25 14:11:22

标签: javascript events onclick

这是一个我有解决方案的问题,但不是答案。考虑到以下情况:

<p><a href="#" onclick="failure(); return false;">Failure Function</a></p>

如果失败函数失败(某些执行错误),则不会运行return语句,并且将释放单击。结果是重新加载页面,如果链接用作按钮在页面中执行某些操作,则会产生不希望的结果。

我的解决方案是:

<p><a href="#" onclick="try{ failure(); } catch(e) { console.log(e); }; return false;">Failure Function</a></p>

它可以工作,但我必须始终这样做,我不认为它使用事件资源来处理执行失败。而且我觉得它太丑了!我想知道是否存在某种事件或“a”类的设置会阻止它重新加载页面。此外,我不理解标准行为,它就像为对象返回true,null或void,因此它将继续 - 通常这些类型被视为false,因此不会发生任何事情。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果该功能失败,它将不会再到达&#34;返回false&#34;,因此它将返回&#39; undefined&#39;默认情况下,对于事件侦听器类似于true。您可以直接将return false用于失败函数。

failure = (e) => {
  try{
    console.log('');
  } catch (error) {
    return false;
  }
}

<p><a href="#" onclick="failure()">Failure Function</a></p>

我还建议您使用&#39; return undefined&#39;修改代码。你会发现它将它视为真实。 这是codepen https://codepen.io/anon/pen/BJgYdV

另一种解决方案可能是

 failure = (e) => {
      e.preventDefault();
      try{
        console.log('');
        //redirect the user here
      } catch (error) {
        //handle the error here
      }
    }