Javascript 按enter键模拟时触发默认行为

Javascript 按enter键模拟时触发默认行为,javascript,Javascript,所以(以“So”开头)我想为qwebirc平台创建一个greasemonkey脚本。我需要根据发生的一些事件自动发送回复。对于那些不知道的人,登录qwebirc后,屏幕底部会有一个输入文本字段,您可以在其中写入回复,然后按enter键将回复发送到服务器。输入字段包含在表单元素中,但表单没有提交按钮 我可以通过写入输入字段的“value”属性来填充输入字段(没有问题),但是我找不到向服务器“提交”回复的方法。我尝试在container表单元素上调用.submit()方法,但这只是重新加载页面(因此

所以(以“So”开头)我想为qwebirc平台创建一个greasemonkey脚本。我需要根据发生的一些事件自动发送回复。对于那些不知道的人,登录qwebirc后,屏幕底部会有一个输入文本字段,您可以在其中写入回复,然后按enter键将回复发送到服务器。输入字段包含在表单元素中,但表单没有提交按钮

我可以通过写入输入字段的“value”属性来填充输入字段(没有问题),但是我找不到向服务器“提交”回复的方法。我尝试在container表单元素上调用.submit()方法,但这只是重新加载页面(因此它将发送到自身-这很有意义,因为表单元素上没有“action”属性)。在我看来,唯一的解释是,一旦在输入字段中按下enter键,就会在qwebirc.js的某个地方调用一个方法

我找不到负责此操作的代码(尽管我在Chrome中使用了此操作,但我在键盘输入上设置了一个事件侦听器断点,当我按下enter键并指向某个函数的开头时,该断点使我停止),因为脚本已缩小,我无法知道那些“m”、“n”、“p”、“t”是什么等等。如果我有未压缩的版本,我可以扫描它,也许,找到它。我还尝试下载qwebirc项目,但是那里有大量的文件——而在服务器上,我尝试编写greasemonkey脚本,只有一个脚本

这里的主要思想是,我想回车键模拟应该触发发送功能——无论在何处,也无论在何处

为了做到这一点,我在stackoverflow上发现了一些相同主题的问题——模拟回车键。我试过这个密码:

function simulate() {
    var evt = document.createEvent('KeyboardEvent'),
        input = document.querySelector('.keyboard-input');

    evt.initKeyboardEvent(
        'keydown', 
        true, 
        true, 
        window, 
        false, 
        false, 
        false, 
        false, 
        13, 
        0
    );

    input.dispatchEvent(evt);
}
事件已创建(我可以在FireBug中的DOM面板中看到它),但没有采取任何操作。我的意思是,为什么.dispatchEvent()的行为不像真正的回车键


提前感谢。

为了回答这个问题,我假设消息输入伪表单与其他表单类似,即消息可以通过按Enter键或单击Send按钮发送

你试过前者;它不起作用。页面可能正在等待单击发送按钮(这可能是由回车键触发的(尽管不是,我不知道为什么您的事件不起作用-我不熟悉事件的复杂性))。那就试试吧

另外,IE使用的是
fireEvent
而不是
dispatchEvent
——因此,如果您使用的是IE,这可能就是问题所在

要触发发送,请单击“发送”按钮:

var e = document.createEvent("MouseEvents");
e.initEvent("click", true, true);
e.target = "button#send";

if(document.fireEvent) {
    document.fireEvent(e);
}
else {
    document.dispatchEvent(e);
}
将分配给
e.target
的字符串更改为唯一标识发送按钮的CSS选择器