【问题标题】:Submit form using Greasemonkey使用 Greasemonkey 提交表单
【发布时间】:2012-07-18 07:39:22
【问题描述】:

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

我想制作一个自动提交表单的 Greasemonkey 脚本,因为我已经有一个批处理文件,可以在启动时启动所有正常的应用程序,这将允许我在 PC 每天启动 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 中真正编码过,所以任何帮助都将不胜感激。我正在玩an existing userscript,它使用 CtrlEnter 来单击按钮。

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

【问题讨论】:

  • 你打算在什么浏览器上使用它?
  • 它们不一样,submit() 不会将提交按钮的名称和值与数据一起发送。
  • 再看看你的 html,我认为 input 元素没有 onsubmit 属性。
  • 它将在 Firefox 中使用,尽管我想这种简单的东西也可以在 Chrome 中使用。至于 onsubmit 属性,这不是我的代码,但嘿,也许这个函数实际上什么也没做,它只是提交移动用户:p
  • @vbevan,函数submitonce() 只是禁用submitreset 按钮。没有任何实际的表单提交。无论如何,你最好的选择是 dda 的答案。

标签: javascript forms submit greasemonkey


【解决方案1】:

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

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

document.forms[0].submit();

【讨论】:

  • 谢谢,我早上登录后试试。
【解决方案2】:

从一位朋友那里得到了一些帮助,他说这应该可行,尽管它不像 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 脚本始终具有的包含等。

【讨论】:

  • 如果这有效,而 dda 的回答无效,那么问题省略了一些关键的 javascript。 onsubmit &lt;input&gt;onsubmit 看起来像是一个转录错误,因为它不是有效的 HTML,并且不会在大多数(¿all?)浏览器中触发。
  • 愚蠢的按钮。喜欢这个。
猜你喜欢
  • 2011-02-06
  • 2013-06-21
  • 1970-01-01
  • 2012-01-27
  • 2016-01-09
  • 2018-12-29
  • 2012-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多