我试图在 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 时,此代码什么都不做。我在带有事件监听器断点的“源”选项卡中的 Chrome 开发人员工具中对其进行测试(我只检查了键盘>输入断点,它显示了所用事件的所有属性)。 我检查了真实键盘点击的所有属性,唯一不同的是 event.isTrusted。
我可以更改什么或做什么才能获得 event.isTrusted = true?
最佳答案
The isTrusted read-only property of the Event interface is a boolean that is true when the event was generated by a user action, and false when the event was created or modified by a script or dispatched via dispatchEvent.
来源:MDN
您可能误解了 Input Event 的概念,事件在用户输入输入后触发。手动触发事件不会使输入改变它们的值,是值的改变使输入触发的事件不是相反的。
如果你真的想用自定义事件改变输入的值,你可以这样做:
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>
关于JavaScript 触发 InputEvent.isTrusted = true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49518959/