3

毎日、職場で初めて Web ページにアクセスしようとすると、社内でホストされている Web ページにリダイレクトされ、IT ガイドラインと、「同意する」と「同意しない」の 2 つのボタンがあるフォームが表示されます。「同意する」をクリックすると、その日の外部インターネット アクセスが許可され、最初に探していたサイトに移動します。

フォームを自動送信する Greasemonkey スクリプトを作成したいと考えています。これは、起動時にすべての通常のアプリを起動するバッチ ファイルが既にあるためです。これにより、毎日 20 分間の起動中に PC を離れることができます。 )

ページには次の 1 つのフォームしかありません。

<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

明らかに、それが仮想の「クリック」なのか、送信機能の単なるトリガーなのかは気にしません。それらは同じものだと思いますよね?

4

2 に答える 2

6

それは単純な仕事であるべきです:

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

document.forms[0].submit();
于 2012-07-19T07:12:41.710 に答える
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 スクリプトが常に持っているインクルードなども必要です。

于 2012-07-19T07:42:46.860 に答える