【问题标题】:Trigger keydown on Plus.Google.com在 Plus.Google.com 上触发 keydown
【发布时间】:2013-04-18 21:45:46
【问题描述】:

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

如果您打开 plus.google.com 并单击必须输入消息的 div,您会意识到,当您在消息中输入链接并按 {spacebar} 时,您会注意到 Google 会检索标题、图片以及该链接的描述。我试图模拟空格键按键 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 检索有关该链接的信息。

【问题讨论】:

  • 另外,您为什么不尝试直接触发 Google 的原始功能,而不是尝试通过模拟按键来间接触发它?
  • @Kenneth 它不是重复的,因为我已经在 SO 中测试了所有代码,但没有一个有效。正如我所说,该内容可编辑 div 上的行为真的很奇怪,因为我实际上可以触发并模拟该页面中的任何事件,实际上是任何事件,但元素 $(".Cla").find(".be.c-B ").children().eq(1).get(0)
  • 您是否尝试过直接触发代码,而不是尝试模拟按键?
  • @Robert Harvey 我将事件分配给一个变量,然后使用 eval() 执行该变量,但它也不起作用。我真的尝试了 SO 中所有可能的代码。我读了很多帖子,以至于我没有更多的页面可以阅读。我已经到了谷歌搜索结果的第 6 页,仍然没有解决办法。
  • 我使用了 Firebug 并跟踪了 keydown 事件,它触发了 6 个链接的函数。我真的迷失了追踪onkeydown。实际上,如果有人能告诉我如何检查究竟是什么函数导致 XHR 检索有关 URL 的信息。

标签: javascript jquery


【解决方案1】:

看看这个 jQuery 插件:SendKeys

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多