javascript - 在 Firefox 插件中模拟击键

标签 javascript firefox firefox-addon dom-events

我希望能够从我的 firefox-addon 模拟击键,但目前我无法做到这一点。

我找到了这篇文章 Why simulation of Left Arrow + Shift keys doesnt work in Firefox?和我的代码几乎一样,但它只做焦点部分,不做 dispatchEvent。知道为什么会发生这种情况吗?

代码如下:

objTag.focus();
var e = document.createEvent('KeyboardEvent');
e.initKeyEvent('keydown', true, true, window, false, false, false, false, 35, 0);
objTag.dispatchEvent(e);

最佳答案

您的代码是正确的,但是 <textarea>元素对 keypress 作出 react 事件,而不是 keydown .

无论如何,为什么这么复杂?你可以设置 input.value然后使用 input.setSelectionRange() method适当移动光标。如果你想在当前行的末尾添加一些东西,你可以这样做:

var position = objTag.selectionStart;
var lineEnd = objTag.value.indexOf("\n", position);
if (lineEnd < 0) // No more line breaks
  lineEnd = objTag.value.length;

var textToAdd = "foo";
objTag.value = objTag.value.substr(0, lineEnd) + textToAdd + objTag.value.substr(lineEnd);
objTag.setSelectionRange(lineEnd + textToAdd.length, lineEnd + textToAdd.length);
objTag.focus();

在文本末尾添加更简单:

var textToAdd = "foo";
objTag.value += textToAdd;
objTag.setSelectionRange(objTag.value.length, objTag.value.length);
objTag.focus();

关于javascript - 在 Firefox 插件中模拟击键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10526316/

相关文章:

javascript - 如何在 Chrome 中查找未被销毁但已被 GC 处理的 Javascript 对象?

css - 如何使 css 工具提示不推送 FF 中的元素轮廓

javascript - Meteor Select Box - 根据数据上下文将选项标记为选中

javascript - 通过 Ajax 在 PHP 中保存来自 Javascript 的数据 URL

python - 在 Firefox 的右键菜单中添加选项

javascript - 引用 Firefox 附加组件的 install.rdf em :version in xul file

javascript - API搜索引擎-搜索引擎列表

browser - 在 Web 应用程序的 HTML 中嵌入微格式信息是否有好处?

javascript - 如何在表单中显示四舍五入的值并在焦点上显示原始值?

javascript - Firefox 扩展中的 IP 地址查找