gpt4 book ai didi

javascript - 如何绑定(bind)人类非编程的所有事件

转载 作者:行者123 更新时间:2023-11-28 07:52:57 25 4
gpt4 key购买 nike

我正在尝试绑定(bind)用户调用的所有事件,即单击、拖动、触摸启动等。

function getAllEvents(element) {
var result = [];
for (var key in element) {
if (key.indexOf('on') === 0) {
result.push(key);
}
}
return result.join(' ');
}

var el = $('*');
el.on(getAllEvents(el), function(e) {
console.log('test'); //this is never being logged.
if (e.originalEvent !== undefined){
//coding here
}
});

但是 console.log('test'); 从未被记录。

有什么问题吗?

最佳答案

我认为这将满足您的需求...每个元素上的每个事件...您将获得大量日志

JSFiddle

function getAllEvents(element) {
var result = [];
for (var key in element) {
if (key.indexOf('on') === 0) {
result.push(key.substring(2)); //remove 'on' from key
}
}
return result.join(' ');
}

$('*').each(function () { //adding for each element
$(this).on(getAllEvents(this), function (e) { //pass element instead of jquery object
console.log('test'); //this is being logged like crazy
if (e.originalEvent !== undefined) {
//coding here
}
});
});
<小时/>

在下面的示例中,我删除了其中包含“鼠标”的事件(mousein、mouseout、movemove 等),因为它们变得有点忙碌。我使用 stopPropagation() 以便每个事件只会记录一次(通过其起源的元素)。我还添加了记录所记录的事件类型,以便您可以查看到底是什么触发了每条日志消息。

JSFiddle

不同的线路是...

...
if (key.indexOf('on') === 0 && key.indexOf('mouse') === -1) {
...
e.stopPropagation();
if (e.originalEvent !== undefined) {
console.log('true - '+e.type);
} else {
console.log('false - '+e.type);
}
...

关于javascript - 如何绑定(bind)人类非编程的所有事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26551960/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com