【问题标题】:javascript - dispatchEvent return true but not working in Chromejavascript - dispatchEvent 返回 true 但在 Chrome 中不起作用
【发布时间】:2019-01-06 11:47:34
【问题描述】:

有一些网页,我在下面输入代码不起作用。例如,我在 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 更新:

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

【问题讨论】:

  • 我正在写一个谷歌扩展,我想自动输入文本并提交,现在我可以成功自动输入文本,但不能发送“输入”
  • 使用 JavaScript 模拟按“Enter”键对我很重要

标签: javascript dispatchevent


【解决方案1】:

请检查以下代码是否正常工作。

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>

【讨论】:

  • 谢谢,但我想要的方法是模拟输入输入并按“输入”键的用户
【解决方案2】:

请在下面找到 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});	
}
&lt;input type="text" id="input-event" value="Hello World" /&gt;

【讨论】:

  • 按键事件 Enter
  • 是的,它可以像我的代码一样工作,但是在搜索引擎“Bing”或某些网站中,仍然无法正常工作。我的目的是我可以在每个网站中使用该代码。
  • 我已经在 Chrome、Firefox、Opera 和 Edge 等下面测试过。
  • [内联链接](cl.ly/0G1D2j0y0N1k) (cl.ly/3S1f3G2x0y1P)(cl.ly/442V0f2n1C2I)(cl.ly/3S3T0a0r2j1L)
  • 抱歉我的英语不好,我想我想在搜索框中的网络(例如 Ask.com 和 Bing.com 等)中执行,而不是网络浏览器。我发现很难在 web 的控制台中进行测试,因为我是在我的插件中编写的。不过,非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-10
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2014-08-23
相关资源
最近更新 更多