在Plus.Google.com上触发按键

Trigger keydown on Plus.Google.com

本文关键字:Plus Google com      更新时间:2023-09-26

我正在创建一个扩展,我必须在用户在Google Plus中键入消息(状态)的可满足的div上模拟空格键。

如果你打开plus.google.com,你点击你必须键入消息的div,你会意识到,当你在消息内键入一个链接,你按下{空格键},你会注意到谷歌检索的标题,图像和该链接的描述。我花了3天时间模拟空格键。我已经可以模拟鼠标在表单元素上移动,我可以模拟发送按钮中的click(),但是我仍然不能模拟空格键的按下。

到目前为止,我最好的代码是:
var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : " ", char : " ", shiftKey : false, keyCode: 32, which: 32, view: window});
//I need to delete the e.keyCode and e.which cause Chrome sets it as a readonly but for some reason if you delete it and assign a new value Chrome accepts (I am very sure this is a serious bug that I discovered in Chrome and that I already reported yesterday in theis bug tracker)
delete e.keyCode;
Object.defineProperty(e, "keyCode", {"value" : 32});
delete e.which;
Object.defineProperty(e, "which", {"value" : 32});
$(".Cla").find(".be.c-B").children().eq(1).get(0).dispatchEvent(e);

谢谢你。

编辑:

我不知道它是否有助于你进行测试,但我建议你这样做:

opened_window = window.open("http://plus.google.com");

之后单击div展开它,然后运行下面的代码:

$(".Cla").find(".be.c-B").children().eq(1).html("The site stackoverflow.com is amazing");
var e = new KeyboardEvent("keydown", {bubbles : true, cancelable : true, key : " ", char : " ", shiftKey : false, keyCode: 32, which: 32, view: window});
delete e.keyCode;
Object.defineProperty(e, "keyCode", {"value" : 32});
delete e.which;
Object.defineProperty(e, "which", {"value" : 32});
$(".Cla").find(".be.c-B").children().eq(1).get(0).dispatchEvent(e);

由于某些原因,这没有触发链接信息的检索。但是如果你点击div然后按空格键你会看到Google检索到链接的信息

看看这个jQuery插件:SendKeys