Javascript 在Firefox插件中模拟击键

Javascript 在Firefox插件中模拟击键,javascript,firefox,firefox-addon,dom-events,Javascript,Firefox,Firefox Addon,Dom Events,我希望能够从我的firefox插件模拟击键,但目前我无法做到这一点 我发现这篇文章和我的代码几乎一样,但它只做焦点部分,而不是dispatchEvent。知道为什么会这样吗 代码如下: objTag.focus(); var e = document.createEvent('KeyboardEvent'); e.initKeyEvent('keydown', true, true, window, false, false, false, false, 35, 0); objTag.dispa

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

我发现这篇文章和我的代码几乎一样,但它只做焦点部分,而不是dispatchEvent。知道为什么会这样吗

代码如下:

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

您的代码是正确的,但是
元素对
keypress
事件作出反应,而不是
keydown

不管怎样,为什么这么复杂?您只需设置
input.value
,然后使用来适当移动光标。如果要在当前行的末尾添加内容,请执行以下操作:

var position=objTag.selectionStart;
var lineEnd=objTag.value.indexOf(“\n”,位置);
if(lineEnd<0)//不再换行
lineEnd=objTag.value.length;
var textToAdd=“foo”;
objTag.value=objTag.value.substr(0,lineEnd)+textToAdd+objTag.value.substr(lineEnd);
对象标记设置选择范围(lineEnd+textToAdd.length,lineEnd+textToAdd.length);
objTag.focus();
在文本末尾添加更简单的内容:

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

您正确地向某个元素发送了一个
keydown
事件(结束键)。也许你应该解释一下你期望看到的效果?此外,如果
objTag
确实是一个对象(意思是Flash或类似的东西)-插件有自己的独立于浏览器的事件处理,它们将不会接收浏览器生成的事件。我的插件将在文本区域的末尾添加一些额外的文本。我想模拟结束键,然后模拟空格键。objtag是textarea元素。它正在做聚焦,但它不会走到终点。嗨。谢谢你的回复。我试过了,但它不完全符合我的要求。也许我可以更好地解释我自己。我将用更多的信息更新这个问题事实上,“按键”部分在击键方面做得很好,但它仍然不能解决我的所有问题,因为它没有我在键盘上按同一个键时得到的确切效果。该站点有一个输入元素,当我按空格、退格、结束等键时,它会触发一个自动完成列表。但我不能用这个解决方案复制这种行为。@fsilva:那么你可能想为每个键发送
keydown
keypress
keyup
,这就是正确模拟用户输入的方法。成功了!谢谢@Wladimir:)。tab键不能以同样的方式工作有什么原因吗?也许自动建议的内容需要更多的时间来加载,我会在它完全加载之前触发它。