Javascript dispatchEvent是否触发“默认”处理程序?
我创建了这个简短的代码片段来测试是否可以在javascript事件中触发Javascript dispatchEvent是否触发“默认”处理程序?,javascript,dom,javascript-events,Javascript,Dom,Javascript Events,我创建了这个简短的代码片段来测试是否可以在javascript事件中触发default处理程序 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script></script> document.addEventListener('mo
default
处理程序
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
<script></script>
document.addEventListener('mousedown', function (e){
console.log('mousedown', e);
if (e.target === document.getElementById('target')) {
if (!e.__redispatched) {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
var ne = new MouseEvent('mousedown', e);
ne.__redispatched = true;
setTimeout(function (){
e.target.focus();
e.target.dispatchEvent(ne);
}, 1000);
}
}
}, true);
</head>
<body>
<input type="text" id="target"/>
<input type="text"/>
</body>
</html>
document.addEventListener('mousedown',函数(e){
console.log('mousedown',e);
if(e.target==document.getElementById('target')){
如果(!e.uu重新修补){
e、 预防默认值();
e、 停止传播();
e、 停止即时复制();
var ne=新的MouseEvent('mousedown',e);
ne.\uu重新修补=真;
setTimeout(函数(){
e、 target.focus();
e、 目标调度事件(ne);
}, 1000);
}
}
},对);
我期望target
input将接收事件并正常处理它,从而将插入符号移动到正确的位置(就像它在mousedown
上通常做的那样)。但什么也没发生
我的问题:
我是否在处理合成事件时对dispatchEvent
做了错误的处理,或者浏览器忽略了默认处理程序?有什么材料/证据证明这一点吗
谢谢。不幸的是,浏览器忽略了不受信任的事件的默认事件处理程序 看 由用户代理生成的事件,或者是由于 用户交互或DOM更改的直接结果是 受用户代理信任,具有不授予的权限 脚本通过 createEvent(“事件”)方法,使用 initEvent()方法,或通过 EventTarget.dispatchEvent()方法。trusted的isTrusted属性 事件的值为true,而不受信任的事件的值为isTrusted 属性值为false 大多数不受信任的事件不应触发默认操作 单击事件的异常。此事件始终触发默认值 操作,即使isTrusted属性为false(此行为为 保留为向后兼容)。所有其他不受信任的事件必须 行为就像对该对象调用了Event.preventDefault()方法一样 事件
谢谢这似乎是答案。他们为什么这样做?