关于jquery:javascript输入事件在谷歌上不起作用

javascript enter event doesn't work on google

我正在尝试用JavaScript模拟一个"回车"键来实现自动化。

1
2
3
4
5
6
7
var script = document.createElement('script');
script.src = 'https://code.jquery.com/jquery-1.10.2.min.js';
script.type = 'text/javascript';
document.body.appendChild(script);
var e = jQuery.Event("keypress");
e.which = 13; //choose the one you want
e.keyCode = 13;

这是用于设置密钥事件的代码(我也尝试了keydown和keyup)。

这在搜索谷歌时似乎不起作用。如果我键入一些文本并触发输入字段$("[name=q]").trigger(e)上的事件,则不会发生任何事情。

我正在使用谷歌来测试模拟"正确"的进入事件。我希望使用JS来自动化Skype Web客户端。

有人知道是否可以使用javascript模拟实际的回车键吗?我已经看到Selenide的pressEnter()工作了,但它使用了WebDriver,所以可能与此无关。

我还尝试过本地JS事件触发

1
2
3
4
5
6
7
var dispatchKeyboardEvent = function(target, initKeyboradEvent_args) {
  var e = document.createEvent("KeyboardEvents");
  e.initKeyboardEvent.apply(e, Array.prototype.slice.call(arguments, 1));
  target.dispatchEvent(e);
};

dispatchKeyboardEvent($("[name=q]"), 'keypress', true, true, null, 'h', 13, '');

SideNote我知道可以通过对元素调用.submit()来提交查询,但这不是我所追求的。


如果代码在单个快照中设置了搜索查询字符串,请侦听字段的on change事件并调用函数。

1
2
3
4
5
$("#searchBarId").on("change", function(){
    var e = jQuery.Event("keydown");
    e.which = 13; // # Enter key code value
    $("input").trigger(e)
});

用jquery从确定的触发按键事件的方法回答

这能解决你的问题吗?


当您在代码中引用document时,代码应该在dom就绪时执行。

加载jquery时应执行事件触发器代码,从而在script.onload回调中写入代码。

如前所述,在将script元素附加到document.body之前附加回调,也在将src分配到script元素之前附加回调。

工作演示:jsFiddle


1
2
3
4
5
6
7
8
9
10
11
12
<select id="ss">
    <option value="1">1</option>
    <option value="2">2</option>
 </select>  

$('#ss').keypress(function(e){
     var p = e.keyCode;
    alert(p);
     if(p==13){
         alert('enter was pressed');
     }
 });