我有一个附加到事件的处理程序,我希望它只在由人类触发时执行,而不是由trigger()方法触发.我该如何区分?
例如,
$('.checkbox').change(function(e){
if (e.isHuman())
{
alert ('human');
}
});
$('.checkbox').trigger('change'); //doesn't alert
Run Code Online (Sandbox Code Playgroud) 我有一个Chrome扩展程序需要产生类似人类的鼠标和键盘行为(具体来说,生成具有isTrusted
值的事件true
).除了滚动chrome.debugger
API 之外,我可以做我需要的一切.
但似乎该Window.scroll()
方法足以达到Chrome 52和Firefox 48.0a1的目的.通过将事件侦听器附加到页面可以观察到这一点,如下所示:
document.addEventListener("scroll", function (event) {
console.log("event trusted? " + event.isTrusted);
});
Run Code Online (Sandbox Code Playgroud)
然后window.scroll(0, 10);
在开发者控制台中运行类似的东西.这将登录event trusted? true
到开发人员控制台.
我的问题是:为什么会这样?由于滚动事件是由脚本明确生成的,因此isTrusted
属性不应该是false
这种情况吗?