有没有一种方法可以在javascript中停止气泡而不使用"e”;参数

Is there a way stop bubble in javascript without "e" parameter?

本文关键字:气泡 quot 参数 一种 方法 javascript 有没有      更新时间:2023-09-26

我看过很多教程,告诉我防止气泡的方法是使用"e"参数

就像:

function(e){
    e.preventDefault()
}

但在某些情况下,萤火虫告诉我,"e不是定义的"是错误的

那么,有没有一种方法可以在没有参数e的情况下停止气泡?

如果使用元素属性(例如<button onclick="myFunc()">)设置事件处理程序,则参数列表将为空。您必须使用<button onclick="myFunc(event)">来传递当前事件作为参数。默认情况下,不会将任何参数传递给回调函数。

在这种情况下,event是一个特殊的变量。使用<element onEVENT="code">时,浏览器会创建一个新脚本和一个带有FunctionBody"代码"的函数。然后,此函数将采用一个参数event,因此您可以在自己的函数/代码中使用此对象(请参阅w3c:ehca)。注意,IE为每个触发的事件创建一个全局对象event

因此,将event作为附加变量传递,并使用e.preventDefault()e.stopPropagation。请注意,return false;不会取消click事件中的传播。

演示:

  • 演示使用jQuery、<element onclick="">HTMLElementObject.onclick时回调函数的参数
  • return false; vs e.stopPropagation();(扰流板:return false;失效)

参考文献:

  • W3C:DOM级别3:stopPropagation
  • W3C:DOM级别3:preventDefault
  • W3C:HTML5事件处理程序内容属性:

    使用上面创建的脚本执行环境,创建一个函数对象(如ECMAScript第5版第13.2节"创建函数对象"中所定义),带有:

    参数列表FormalParameterList

    如果属性是Window对象的oneror属性

    • 让函数有三个参数,分别命名为eventsourcefileno

    否则

    • 让函数有一个名为event的参数