我正在尝试自动化一些任务JavaScript我需要使用InputEvent
,但是当我使用正常事件时,我得到事件.isTrusted = false而我的活动什么也没做。这是我的事件代码:
var event = new InputEvent('input', {
bubbles: true,
cancelable: false,
data: "a"
});
document.getElementById('email').dispatchEvent(event);
此代码应将“a”放入 id 为“email”的文本字段中,但是当 event.isTrusted = false 时,此代码正在执行nothing。我正在 Chrome 开发者工具的“源”选项卡中使用“事件侦听器断点”对其进行测试(我仅检查了键盘>输入断点,它显示了所用事件的所有属性)。
我检查了真实键盘点击的所有属性,唯一不同的是 event.isTrusted。
我可以改变什么或者我可以做什么来获得事件.isTrusted = true?
Event 接口的 isTrusted 只读属性是一个布尔值,即当事件由用户操作生成时为 true, and 当事件由脚本创建或修改或通过dispatchEvent 调度时为 false.
Source: MDN https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted
你可能误解了这个概念输入事件 https://developer.mozilla.org/en-US/docs/Web/API/InputEvent,事件被触发after用户输入内容。手动触发事件不会使输入改变它们的值,是改变输入的值使输入触发的事件不相反。
如果您确实想使用自定义事件更改输入的值,您可以执行以下操作:
let TargetInput = document.getElementById('target')
let Button = document.getElementById('btnTrigger');
Button.addEventListener('click',function(e){
Trigger();
}, false);
TargetInput.addEventListener('input',function(e){
if(!e.isTrusted){
//Mannually triggered
this.value += e.data;
}
}, false);
function Trigger(){
var event = new InputEvent('input', {
bubbles: true,
cancelable: false,
data: "a"
});
TargetInput.dispatchEvent(event);
}
Target: <input type="text" id="target">
<hr>
<button id="btnTrigger">Trigger Event</button>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)