我正在尝试在Google Chrome控制台中模拟keydown事件。我感兴趣的网站是web.whatsapp.com,关注的元素是document.getElementsByClassName("input-search")[0];
我想要做的是,当在该字段中键入一些文本时,下面显示的联系人列表会更新包含该文本字段中内容的联系人。
在尝试其他任何事情之前,我只需使用this回答将焦点设置到此文本字段。
我尝试过的事情是:
https://stackoverflow.com/a/12187302/1291122 - 没有任何反应,且所显示的联系人列表中没有更新任何元素。
https://stackoverflow.com/a/10520017/1291122 - 什么都没发生。相同的结果
还有一些其他来源。但没有任何效果。如何使用JavaScript控制台模拟确切的效果(在文本字段中键入一些文本并查看联系人列表更新)?
我的Chrome版本是截至编写答案日期的最新版本 - 41.0.2272.101 修改
这是我尝试过的示例代码之一。 (摘自上面的答案3)
setTimeout(function () {
$(".input-search").focus();
Podium = {};
Podium.keydown = function(k) {
var oEvent = document.createEvent('KeyboardEvent');
// Chromium Hack
Object.defineProperty(oEvent, 'keyCode', {
get : function() {
return this.keyCodeVal;
}
});
Object.defineProperty(oEvent, 'which', {
get : function() {
return this.keyCodeVal;
}
});
if (oEvent.initKeyboardEvent) {
oEvent.initKeyboardEvent("keydown", true, true, document.defaultView, false, false, false, false, k, k);
} else {
oEvent.initKeyEvent("keydown", true, true, document.defaultView, false, false, false, false, k, 0);
}
oEvent.keyCodeVal = k;
if (oEvent.keyCode !== k) {
alert("keyCode mismatch " + oEvent.keyCode + "(" + oEvent.which + ")");
}
document.dispatchEvent(oEvent);
}
Podium.keydown(83);
}, 5000);
只需将此代码放入Chrome浏览器控制台(适用于web.whatsapp.com)并按Enter键即可。然后立即点击您网页的任何部分(转移焦点)。 5秒后,您会在该文本字段上看到光标。但是不会调用按键事件。
答案 0 :(得分:2)
当我正在使用javascript操作web.whatsapp.com时,你可以看看我创建的这个函数在搜索输入中输入一些文字:
public DateTime findOldestDogsBirthday() {
Collections.sort(dogList, new Comparator<Dog>() {
@Override
public int compare(Dog o1, Dog o2) {
DateTime d1 = o1.getBirthday();
DateTime d2 = o2.getBirthday();
return d1.compareTo(d2);
}
});
return !dogList.isEmpty() ? dogList.get(0).getBirthday() : null;
}
function searchContact(text)
{
var input = document.getElementsByClassName("input input-search")[0];
input.value = "";
var evt = document.createEvent("TextEvent");
evt.initTextEvent ("textInput", true, true, window, text, 0, "en-US");
input.focus();
input.dispatchEvent(evt);
}
是输入元素。 input
是输入事件。 evt
是您要搜索的文字。
此功能执行以下操作:
获取输入 - &gt;清除它 - &gt;创建键盘输入事件 - &gt;关注输入 - &gt;在输入上应用事件
编辑:自从回答这个问题以来,Whatsapp Web已经更新,因此这个解决方案在Whatsapp Web中不再起作用。(可能对其他地方或项目有用)