Javascript 创建自定义滚动事件,与用户事件区分?

Javascript 创建自定义滚动事件,与用户事件区分?,javascript,Javascript,在JavaScript中,如何调度将由onscroll拾取的合成事件,其中该事件包含一些标志,告诉我它是合成事件,并且不是来自用户 谢谢您可以使用事件构造函数创建自定义事件,如下所示: var event = new Event('build'); // Listen for the event. elem.addEventListener('build', function (e) { ... }, false); // Dispatch the event. elem.dispatchE

在JavaScript中,如何调度将由
onscroll
拾取的合成事件,其中该事件包含一些标志,告诉我它是合成事件,并且不是来自用户


谢谢

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

var event = new Event('build');

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

// Dispatch the event.
elem.dispatchEvent(event);
var event = new CustomEvent('build', { 'detail': elem.dataset.time });
要向事件对象添加更多数据,存在
CustomEvent
接口,可以使用detail属性传递自定义数据。 例如,可以按如下方式创建事件:

var event = new Event('build');

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

// Dispatch the event.
elem.dispatchEvent(event);
var event = new CustomEvent('build', { 'detail': elem.dataset.time });
这将允许您访问事件侦听器中的其他数据:

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

您可以使用
CustomEvent()
构造函数,
.dispatchEvent()
,检查
事件中的
属性是否为
;如果
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);

这不应该是
event[“detail”]&&event[“detail”]
@KScandrett是的,请参阅更新的帖子。或者,
if(事件中的“细节”){}