使用Greasemonkey提交表单

时间:2012-07-19 06:56:51

标签: javascript forms submit greasemonkey

第一次,每天,我尝试访问工作中的网页,我被重定向到内部托管的网页,其中包含IT指南和带有“同意”和“不同意”两个按钮的表单。点击“同意”,然后允许当天的外部互联网访问,并将您发送到您最初寻找的网站。

我想创建一个自动提交表单的Greasemonkey脚本,因为我已经有一个批处理文件在启动时启动所有正常的应用程序,这样我就可以在每天开始运行20分钟时离开PC -up;)

该页面只有一种形式:

<form method="post">
<input type="submit" value="I Agree" class="agree" onsubmit="submitonce(this)" /> 
<input type="button" onclick="javascript:window.close();" value="I Disagree"
  class="disagree"/>
</form>

不确定是否重要,因为我只需要点击,但函数submitonce是:

function submitonce(theform) {
  //if IE 4+ or NS 6+
  console.log("Submitting");
  if (document.all || document.getElementById) {
    //screen thru every element in the form, and hunt down "submit" and "reset"
    for (i = 0; i < theform.length; i++) {
      var tempobj = theform.elements[i];
      if (tempobj.type.toLowerCase() == "submit" ||
        tempobj.type.toLowerCase() == "reset")
        //disable em
        tempobj.disabled = true;
    }
  }
}

我有剩下的来源,但看起来没有其他任何相关内容。我之前在Greasemonkey / JS中没有真正编码,所以任何帮助都会受到赞赏。我正在玩an existing userscript使用 Ctrl Enter 来点击按钮。

显然我不在乎它是虚拟的“点击”还是仅仅是提交功能的触发器,因为我会说它们是同一个东西不是吗?

2 个答案:

答案 0 :(得分:5)

这应该是一项简单的工作:

// ==UserScript==
// @name           myscript
// @namespace      whatever
// @include        http://path to the internal page
// ==/UserScript==

document.forms[0].submit();

答案 1 :(得分:1)

得到了一位朋友的帮助,他说这应该有用,虽然它并不像dda那样简单。显然这适用于Chrome:

function ClicktheButton(obj) {
  var evt = document.createEvent("MouseEvents");
  evt.initMouseEvent("click", true, true, window,
    0, 0, 0, 0, 0, false, false, false, false, 0, null);
  var cancelled = !obj.dispatchEvent(evt);      
/*

  if(cancelled) {
    // A handler called preventDefault
    alert("cancelled");
  } else {
    // None of the handlers called preventDefault
    alert("not cancelled");
  }
  */
}

var StupidButton = document.querySelector('input[type="submit"][value="I Agree!"]');
ClicktheButton(StupidButton);

它还需要GreaseMonkey脚本始终具有的包含等。