【发布时间】:2018-02-21 23:08:16
【问题描述】:
我正在尝试创建一个 chrome 扩展来修改流行的浏览器游戏 Agar.io 的控件。快速总结一下,在游戏中 SPACE 执行分裂动作。我想执行相同的操作,但按 D 而不是 SPACE。扩展工作正常。它检测到 D 被按下并调用了我的 split() 函数;我知道这是因为警报弹出但实际的游戏动作没有执行。我环顾四周并尝试了不同的方法,但没有任何效果。下面是我的 JS 文件。
window.addEventListener('keydown', keydown);
function keydown(event) {
if (event.keyCode == 68) { //key D
split();
}
}
function split() {
$("body").trigger($.Event("keydown", { keyCode: 32}));
$("body").trigger($.Event("keyup", { keyCode: 32}));
alert("Did it work?");
}
也试过这个方法,没有成功:
var space = jQuery.Event("keydown");
space.which = 32;
$("body").trigger(space);
如本题[Definitive way to trigger keypress events with jQuery
]1
【问题讨论】:
-
@Dekel 我已经尝试过您引用的问题中显示的方法。它没有用,这就是我发布新问题的原因。
-
尝试在
split();之后添加event.stopPropagation(); -
stopPropagation();没用,但谢谢。
-
我认为您需要查看内容脚本。基本上你想在页面上下文中模拟 D 键的按下 - 这是
Agar.io,而不是在你的扩展上下文中。 -
对 addEventListener 的 useCapture parameter 使用 true:document.addEventListener("keydown", handler, true);并将您的内容脚本声明为“run_at”:“document_start”,不要忘记重新加载扩展。
标签: javascript jquery google-chrome-extension