创建一个自定义滚动事件,可以区别于用户事件?

时间:2017-03-02 05:23:45

标签: javascript

在JavaScript中,如何发送由onscroll拾取的合成事件,其中该事件包含一些标记,告诉我它是合成事件,并且不起源于用户

由于

2 个答案:

答案 0 :(得分:1)

您可以使用Event构造函数创建自定义事件,如下所示:

var event = new Event('build');

// Listen for the event.
elem.addEventListener('build', function (e) { ... }, false);

// Dispatch the event.
elem.dispatchEvent(event);

要向事件对象添加更多数据,CustomEvent接口存在,并且detail属性可用于传递自定义数据。 例如,可以按如下方式创建事件:

var event = new CustomEvent('build', { 'detail': elem.dataset.time });

这将允许您访问事件监听器中的其他数据:

function eventHandler(e) {
  console.log('The time is: ' + e.detail);
}

details are here

答案 1 :(得分:1)

您可以使用CustomEvent()构造函数.dispatchEvent(),检查"detail"属性是in event;如果true

element.addEventListener("scroll", function(event) {     
  if ("detail" in event && event.detail.id === 123) {
    // do stuff with `event.detail.prop`
  }
});

var id = 123;
var o = {detail:{id: id, prop:"abc"}};

var e = new CustomEvent("scroll", o);
element.dispatchEvent(e);