Javascript 在Plus.Google.com上触发按键

Javascript 在Plus.Google.com上触发按键,javascript,jquery,Javascript,Jquery,我正在创建一个扩展,其中必须模拟contenteditable div上的空格键,用户在Google Plus中键入消息(状态) 如果您打开plus.google.com并单击必须键入消息的div,您将意识到当您在消息中键入链接并按{spacebar}时,您将注意到google检索该链接的标题、图像和描述。我花了三天时间试图模拟空格键按下。我已经可以在表单的元素上模拟鼠标,可以在“发送”按钮中模拟click(),但仍然无法模拟空格键 到目前为止,我最好的代码是: var e = new Keyb

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

如果您打开plus.google.com并单击必须键入消息的div,您将意识到当您在消息中键入链接并按{spacebar}时,您将注意到google检索该链接的标题、图像和描述。我花了三天时间试图模拟空格键按下。我已经可以在表单的元素上模拟鼠标,可以在“发送”按钮中模拟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插件:

另外,你为什么不直接探索触发Google的原始功能呢,而不是试图通过模拟击键间接触发它?@Kenneth它不是重复的,因为我已经在SO中测试了所有代码,没有一个有效。正如我所说,contenteditable div上的行为真的很奇怪,因为我实际上可以触发并模拟该页面中的任何事件,除了元素$(“.Cla”).find(“.be.c-B”).children().eq(1).get(0)上的向下键空格键之外的任何事件。您是否尝试过直接触发代码,罗伯特·哈维(Robert Harvey)没有尝试模拟按键,而是将事件分配给一个变量,然后用eval()执行该变量,但它也不起作用。我真的尝试了所有可能的代码。我读了太多的帖子,没有更多的页面可读。我已经浏览了谷歌搜索结果的第6页,但仍然没有找到解决方案。我使用了Firebug并跟踪了keydown事件,它触发了6个链接函数。我真的迷路了。实际上,如果有人能告诉我如何检查是什么函数导致XHR检索关于URL的信息。