InvalidStateError: Failed to execute 'dispatchEvent'
InvalidStateError: Failed to execute 'dispatchEvent' on 'EventTarget'
我试图在Javascript中欺骗鼠标事件。下面是发生的事情:
// Create event object
var event = new CustomEvent('mousedown');
// Initialize
event.initCustomEvent('mousedown', true, false, {});
// Inherit
event = Object.create(event);
event.pageX = 10;
event.pageY = 10;
现在,要调度…
targetElement.dispatchEvent(event);
当我这样做时,我得到错误:
错误:Failed to execute 'dispatchEvent' on 'EventTarget':提供的事件为空。
我做错了什么?
事件必须有自己的类型属性,继承的类型属性是不够的,这意味着类型被视为未定义,因此出现错误
// Create event object
var event = new CustomEvent('mousedown', {bubbles: true, cancelable: false});
// initCustomEvent deprecated, see below
// Inherit
event = Object.create(event);
event.type = 'mousedown';
event.pageX = 10;
event.pageY = 10;
此错误也可能是对其他意外行为的警告,这些行为将源于您调度对象的方式,该对象继承了事件而不是拥有自己的属性。
CustomEvent实例不是密封的,所以你总是可以直接给它们添加属性
var ev = new CustomEvent('mousedown', {bubbles: true, cancelable: false});
ev.pageX = 10;
ev.pageY = 10;
注意,
customEvent.initCustomEvent
方法是已弃用的,您应该将此信息作为第二个参数
中的字典传递给构造函数。var cev = new CustomEvent('mousedown', {bubbles: true, cancelable: false});
如果你不需要detail属性,考虑使用Event而不是CustomEvent
var eev = new Event('mousedown', {bubbles: true, cancelable: false});
// cev as above, now consider
'detail' in cev; // true
cev.detail; // null
// vs
'detail' in eev; // false
eev.detail; // undefined
mousedown事件通常具有0
的只读详细信息(很少被代码检查)
问题出在这一行
event = Object.create(event);
显然,dispatchEvent
期望事件对象有一定的自己的属性,它找不到,因为它没有检查原型。然后假定传递的对象不是格式良好的事件实例。因此出现了错误。
我不知道为什么你要在原型中创建具有原始事件的新对象,没有这个一切都应该工作
相关文章:
- 如果在对象上触发了dispatchEvent,我如何才能找到如何侦听它以及在哪里调度事件
- jsdom:dispatchEvent/addEventListener似乎不起作用
- window.dispatchEvent 在 Firefox、Safari 或 IE 中不起作用
- window.opener.dispatchEvent 不会在 Firefox 中传输附加的数据
- dispatchEvent javascript中的所有元素
- Javascript 的调试策略“TypeError: elem.dispatchEvent is not a func
- Jquery dispatchEvent wrapper method
- 使用Polymer和Firefox使用dispatchEvent时出现问题
- 未捕获的类型错误:child.dispatchEvent不是函数EaselJS
- dispatchEvent未触发jQuery.on()事件侦听器
- javascript for循环中的DispatchEvent
- Javascript dispatchEvent click在IE9和IE10中不起作用
- element.dispatchEvent不是函数
- Javascript dispatchEvent-如何更改eventArgs
- 如何在javascript中为自定义对象dispatchEvent
- dispatchEvent无序地生成调用捕获/冒泡侦听器
- dispatchEvent发送给所有监听器
- dispatchEvent & # 39;鼠标悬停# 39;不工作
- dispatchEvent在firefox中不工作
- (IE9)无法获取property 'dispatchEvent'未定义或空引用的