callback - 有返回值的 addEventListener 回调的解决方法吗?

标签 callback dom-events return-value addeventlistener

我目前正在试验自定义(2 级 DOM)事件,现在我遇到了 addEventListener() 不接受返回值的回调的问题——或者至少我我不熟悉正确的方法。

基本上我想要的是:

    addEventListener("customEvent",
        function() {
            return true ;
         },
    false) ;

所以如果我创建一个包装函数的实例 new wrapper(),

     function wrapper() {
         addEventListener(...) ;
     }

每当事件被触发和捕获时,这将正确返回 true

请记住这是实验性的:我知道有很多解决方案不需要从 addEventListener 方法返回。我只是好奇是否有解决方法,或者这是否实际上是一个死胡同,我不应该打扰。

最佳答案

AddEventListener 按照规范不会也不会返回值。如果 addEventListener 要返回一个值,它将毫无用处,因为触发 callbackFunction 的事件将获得返回值,而不是仅注册它的 addEventListener。

addEventListener( 'onload', function() {

  // do something

  return true;

  // bool(true) would be returned to window.event[onload] and not to addEventListener if that were the case which would still make it useless to you.

}, false );

话虽这么说,但有一个肮脏的方法,但它应该可以满足您的需求。

var eventTracker = {

  retVal: false,

  retEvt: false,

  trigger: function( e ) {

    e = e || window.event;

    // some code here
  }

};

function someFn(e) {

  e = e || window.event;

  // Some code here

  eventTracker.retVal = true;

  eventTracker.retEvt = e.type;

  eventTracker.trigger.call( e );

}

// Bind the event in all browsers
if ( window.addEventListener ) {
    window.addEventListener( 'load', someFn, false );
} else if ( window.attachEvent ) {
    window.attachEvent( 'onload', someFn );
} else {
    window.onload = someFn;
}

关于callback - 有返回值的 addEventListener 回调的解决方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2592282/

相关文章:

Javascript 回调超时

javascript - 可以使用 Javascript 将多个事件监听器/处理程序添加到同一元素吗?

jquery - 当样式表中未设置属性时,jQuery.css() 是否始终返回 'none'?

c - C 中的通用函数类型回调,如 javascript

ruby-on-rails - rails 3 : Should I explicitly save an object in an after_create callback?

callback - 戈朗 : evaluate variable in callback declaration

javascript - 加载文档时的全屏浏览器窗口

javascript - 如何在 Android webview 中通过 ID 捕获元素点击?

sql - 从函数返回 CASE 表达式的聚合

java - 如何在Java中的类字段内进行计算?