尝试使用greasemonkey模拟按钮的单击

时间:2011-03-18 20:17:21

标签: javascript html forms greasemonkey form-submit

我正在尝试编写一个greasemonkey脚本,通过浏览器更新项目集合的库存。为此,我需要自动填充一些表单并在提交按钮上模拟鼠标单击。我的表格填写得很好,但我坚持按钮提交。

这是我试图模拟点击

的按钮的HTML
<input type="submit" value="Find" style="" name="process-form" onclick="imhocaller.value='find-resources-page.left'; imhoaction.value='process-form';">

我尝试过做这样的事情,但没有运气。

document.getElementsByName('process-form').submit();

如果需要,我可以发布更多代码。谢谢!

5 个答案:

答案 0 :(得分:6)

您还可以通过最新的浏览器发送自定义点击事件,并在IE中“触发”onclick事件。这是最近的功能,允许大量控制事件。

var button = document.getElementById("test");
button.onclick = function()
{
    alert("event was dispatched on me");      
}
if(document.createEvent)
{
    var click = document.createEvent("MouseEvents");
    click.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
    button = document.getElementById("test");
    button.dispatchEvent(click);
    button.focus();
}else if(document.documentElement.fireEvent)
{
    button = document.getElementById("test");
    button.fireEvent("onclick");
    button.focus();
}

http://jsfiddle.net/ZWyp7/3/

请注意,您需要在发送事件之前先监听事件。

答案 1 :(得分:5)

想出来。需要使用.click()而不是.submit()。 我还需要添加[0]作为Georgy的建议。

document.getElementsByName('process-form')[0].click();

答案 2 :(得分:1)

试试这个文件.getElementsByName('process-form') [0] .submit();

UPD:对!必须是.click()而不是.submit()

答案 3 :(得分:0)

在这里,您尝试提交输入,您必须提交表单。因此,如果您标记为#myForm的ID,则需要执行:document.getElementById('myForm').submit()

答案 4 :(得分:0)

另一种方法是在JQuery中使用.trigger( "submit" )