Ale*_* B. 6 html javascript firefox jquery
我有这个问题,element.dispatchEvent(e);在Firefox中无法正常工作.
该的jsfiddle例子中,我遇到的麻烦.
该element.dispatchEvent(e);火灾和回报true,但所需的事件/效果不会发生,在小提琴的情况下,一开口select下拉.
它适用于Chrome(版本43.0.2357.134米).
我正在使用Firefox 39.0对此进行测试,不知道旧版本或新版本是否属于这种情况.
任何指向正确的方向将不胜感激.
这可能不是完整的答案,因为broswer处理选择元素和事件的方式存在很多差异,但部分问题可能归因于对象的isTrusted属性Event.请参见:https:
//developer.mozilla.org/fr/docs/Web/API/Event/isTrusted
您可以看到浏览器之间已经存在差异:
在Firefox中,如果事件由用户调用,则该事件是受
信任的,如果由脚本调用,则不受信任.在Internet Explorer中,除了
使用createEvent()方法创建的事件之外,所有事件都是可信任的.Chrome不支持此属性.
如果你看一下是什么isTrusted意思:http:
//www.w3.org/TR/2012/WD-DOM-Level-3-Events-20120614/#trusted-events
由用户代理生成的事件,或者作为用户交互的结果,或者作为DOM更改的直接结果,由用户代理信任的事件具有通过DocumentEvent.createEvent脚本生成的事件所不具有的权限("Event")方法,使用Event.initEvent()方法修改,或通过EventTarget.dispatchEvent()方法调度.受信任事件的isTrusted属性值为true,而不受信任事件的isTrusted属性值为false.
大多数不受信任的事件不应触发默认操作,但click或DOMActivate事件除外.这些事件会触发激活触发器的默认操作(有关详细信息,请参阅激活触发器和行为); 这些不受信任的事件的isTrusted属性值为false,但仍会启动任何默认操作以实现向后兼容性.所有其他不受信任的事件必须表现得就像在该事件上调用了Event.preventDefault()方法一样.
所以基本上,至少在Firefox中,脚本生成的事件不一定与用户生成的事件完全相同.您可以使用它来触发默认行为,例如选中复选框或跟踪链接,但在许多情况下,它不会通过接口实际生成事件.它会被解雇,但有限制.
同样,也许有一种方法可以实现你正在尝试的东西,我不完全确定这是这个特定问题的原因,但是从规范中可以清楚地看出,通过脚本模仿用户交互并不能保证工作.