我在一些我正在研究的JS代码中遇到过这个问题:
if ( typeof( e.isTrigger ) == 'undefined' ) {
// do some stuff
}
Run Code Online (Sandbox Code Playgroud)
这似乎是jQuery的一部分.据我所知,它会告诉您事件是由用户发起还是自动生成.
这是正确的吗?鉴于它没有记录,有没有办法找到这样的东西,而不是落后于jQuery API的幕后?
好吧,这个问题之前已经被问过,但是在jQuery的背景下.在jQuery中,我们可以通过事件Object(link)的originalEvent属性来检查它,它告诉它是手动事件还是编程事件.
在我的情况下,我使用Javascript事件监听器和触发器.在这种情况下,我们可以区分这两种事件(编程和手动)吗?如果不是那么任何变通方法?
我的听众:
function setUpListeners(){
_cellViewWrapper.addEventListener('mousedown',mouseDownHandler,false);
_cellViewWrapper.addEventListener('mouseover',mouseEnter,false);
_cellViewWrapper.addEventListener('blur',blurHandler,true);
_cellViewWrapper.addEventListener('focus',focusEventHandler,true);
}`
Run Code Online (Sandbox Code Playgroud)
触发器使用案例:1.)
if(!IE_FLAG) hidePicker();
//if browser is internet explorer
else{
//if blur is allowed then hide Picker
if(_ieBlurAllowed) hidePicker();
//if blur is not allowed -- keep focus on picker input
//triggering the focus event here
else blurredElement.focus(); /
}
Run Code Online (Sandbox Code Playgroud)
2.) if((inputElem !== _focussedInput)) setTimeout(function(){ inputElem.focus(); },10);
还有很多...
我有一个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
这种情况吗?
change
当用户更改给定SELECT
元素时,我有一个 jQuery事件。然而,该事件也可能由第三方脚本触发。我想要做的是检测事件是以编程方式触发还是由用户触发。
我已经在这个问题中尝试了公认的解决方案检查事件是否由人类触发
但请注意,此答案中的 JSFiddle 是针对click
事件而不是change
事件。
为了演示我修改了小提琴并创建了这个:http : //jsfiddle.net/Uf8Wv/231/
如果您在最新的 Firefox 或 Chrome 中尝试此操作,您将看到human
即使以编程方式触发事件时也会显示警报。
我试过了,event.originalEvent.isTrusted
但这不适用于所有浏览器。任何人都可以帮忙吗?
我想知道焦点事件是由程序触发还是人为触发?
我正在写剧本的一部分
jQuery( document ).on( 'focus', '#song_artist_focus', function(event) {
if(event.originalEvent === undefined ){
alert('I am not human');
return;}
alert('I am human') ;
});
Run Code Online (Sandbox Code Playgroud)
当我像这样以编程方式调用这个脚本时
jQuery('#song_artist_focus').focus();
Run Code Online (Sandbox Code Playgroud)
它仍然表明事件是由人触发的。请帮忙 ?
我检查了这个解决方案Check if event is generated by a human。但不适用于焦点事件。