javascript-dispatchEvent返回true,但无法在Chrome中运行

时间:2018-07-30 09:01:27

标签: javascript dispatchevent

有些网站,我在下面键入的代码不起作用。例如,我在Bing(搜索引擎)的控制台中键入了代码

var event;
event = document.createEvent('Event');
event.initEvent("keypress", true, true);
event.view = window;
event.keyCode = 13;
event.which = 13;
event.charCode = 13;
event.code = "Enter";
event.key = "Enter";
event.bubbles = true;

并且我已经在搜索栏中输入了一些文本,该元素的ID为“ sb_form_q”,所以

var element = document.getElementById("sb_form_q");
element.dispatchEvent(event);

它将返回true,但实际上什么也没有发生。 我尝试了很多网站,有些可以正常工作,有些不能正常工作,我也不知道为什么。

2018/8/3更新:

我知道为什么某些网页调度“输入”事件不起作用,因为输入不是通过“输入”键提交,而是通过提交或onsubmit事件提交。

2 个答案:

答案 0 :(得分:1)

也请找到下面的 Enter 关键字示例。

window.onload = function(){
    var ev = document.createEvent('Events');
    ev.initEvent('keypress', true, true);
    ev.keyCode = 13;
    ev.which = 13;
    ev.charCode = 13;
    ev.key = 'Enter';
    ev.code = 'Enter';
    var eventReturns = document.querySelector('#input-event').dispatchEvent(ev);    
    var Inputvalue = document.getElementById('input-event').value;
    console.log({isdispatch: eventReturns, value: Inputvalue});	
}
<input type="text" id="input-event" value="Hello World" />

答案 1 :(得分:0)

请检查下面的代码是否有效。

function MouseEvent(event) {
	var x = document.createEvent("MouseEvent");
	x.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

	document.getElementById("myDiv").dispatchEvent(x);
	console.log(document.getElementById("myDiv").dispatchEvent(x));
}
<div id="myDiv"></div>
<button onclick="MouseEvent(event)">Simulate click</button>