preventDefault() 类似 javascript 中的功能

preventDefault() like functionality in javascript

我已经完成了这个问题

event.preventDefault() vs. return false

但没有找到我的解决方案。实际上,我正在使用 javascript 函数返回上一页,单击

时可以正常工作
<a href="#" onclick="goBack()"><img src="images/backbtn.png"></a>

函数

function goBack(){
    window.history.back();
}

当我点击 <a> 时,它在 url 中包含了 #,我想阻止它。在 jquery 中,我们使用 preventDefault() 来停止元素的默认事件,但是在 javascript 中是否有类似的函数来停止它。

我知道我可以在 href 中使用 javascript:void(0) 这将解决问题,但可能还有许多其他实例,所以我想了解 javascript.[=23 中的函数=]

我试过使用 return false; 但我把它写在上面这样

function goBack(){
    return false;
    window.history.back();
}

然后它停止执行函数,如果我这样写

function goBack(){
    window.history.back();
    return false;
}

那么这个 return false; 没有影响。我确定 javascript 中有一些,因为 jquery 是从 javascript.

生成的

如有任何帮助,我们将不胜感激。提前致谢!

据我所知,preventDefault() 也是一个原生 JS 函数,因此您可以在没有 jQuery 的情况下使用它并获得相同的结果。

您可以在此处阅读更多相关信息:MDN: Event.preventDefault()

event.preventDefault() works both in Javasccript and Jquery

如果获取 # 是问题所在并且出于某种原因你真的只想使用 preventDefault() 那么你必须将 event 传递到函数中然后在函数内部使用event.preventDefault()

<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a>

然后在您的Javascript中使用这个传递的事件并停止默认行为。

function goBack(event){
  event.preventDefault();
  window.history.back();
}

preventDefault 存在于 javascript 中,但如果您对类似 jQuery 的解决方案感兴趣,则需要注意兼容性问题。 考虑到与旧浏览器的兼容性问题,另一种解决方案是:

function goBack(evt){
  var e = evt || window.event;
  if (e !== undefined) {
     if (e.preventDefault) {
       e.preventDefault();
     } else {  // IE
       e.returnValue = false;
     }
  }
  window.history.back();
}
<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a>

为了增加答案,jquery 中的 return false 同时执行 event.preventDefaultevent.stopPropagation()

来自jquery源代码,jquery.event.dispatch

if ( ret !== undefined ) {
   if ( (event.result = ret) === false ) {
     event.preventDefault();
     event.stopPropagation();
   }
}

两个 preventDefault and stopPropagation 在 Javascript 中可用。

对于 IE < 9,event.stopPropagation 可以通过 event.cancelBubble = true 完成,event.preventDefault 可以通过 event.returnValue = false

完成