使用Greasemonkey提交表格

Submit form using Greasemonkey

本文关键字:表格 提交 Greasemonkey 使用      更新时间:2023-11-14

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

我想制作一个Greasemonkey脚本来自动提交表单,因为我已经有一个批处理文件在启动时启动了所有正常的应用程序,这将允许我在电脑每天启动20分钟时离开电脑;)

页面只有一种形式:

<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中真正编码过,所以任何帮助都将不胜感激。我正在处理一个现有的用户脚本,该脚本使用CtrlEnter来单击按钮。

显然,我不在乎这是虚拟的"点击"还是只是提交功能的触发,因为我会说它们是一样的,不是吗?

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

// ==UserScript==
// @name           myscript
// @namespace      whatever
// @include        http://path to the internal page
// ==/UserScript==
document.forms[0].submit();

得到了一位朋友的帮助,他说这应该有效,尽管这远没有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脚本一直拥有的include等。