Join the Stack Overflow Community
Stack Overflow is a community of 6.3 million programmers, just like you, helping each other.
Join them; it only takes a minute:
Sign up

The first time, each day, I try to access a web page at work, I get redirected to an internally hosted web page with the IT guidelines and a form with two buttons "Agree" and "Disagree". Clicking "Agree" then allows external internet access for that day and sends you to the site you were originally looking for.

I want to make a Greasemonkey script that auto-submits the form, since I already have a batch file starting up all my normal apps on boot and this would allow me to just leave the PC while it's doing its 20 minute daily start-up ;)

The page only has the one form:

<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>

And not sure if it matters, since I only need the click, but the function submitonce is:

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;
    }
  }
}

I have the rest of the source, but it doesn't look like there is anything else relevant. I haven't really coded before in Greasemonkey/JS, so any help would be appreciated. I'm playing around with an existing userscript that uses CtrlEnter to click the button.

Obviously I don't care if it's a virtual "click" or just a trigger of the submit function, since I'd say they are the same thing aren't they?

share|improve this question
    
What browser(s) do you intend to use it on? – Fabrício Matté Jul 19 '12 at 7:01
    
They're not the same, submit() doesn't send the name and value of the submit button with the data. – Adi Jul 19 '12 at 7:06
1  
Taking a second look at your html, I don't think input elements have an onsubmit attribute. – Fabrício Matté Jul 19 '12 at 7:09
    
It's to be used in Firefox, though I imagine something this simple would work in Chrome too. As for the onsubmit attrib, it's not my code, but hey maybe that function actually does nothing it just the submit moves users on :p – vbevan Jul 19 '12 at 7:33
1  
@vbevan, the function submitonce() is only disabling the submit and reset buttons. Doesn't have anything with actual form submission. Anyway, your best bet is dda's answer. – Adi Jul 19 '12 at 7:36
up vote 5 down vote accepted

It should be a simple job:

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

document.forms[0].submit();
share|improve this answer
    
Thanks, I'll try in the morning when I login. – vbevan Jul 19 '12 at 7:43
2  
And please report back :-) – dda Jul 19 '12 at 14:55
2  
Worked great, thanks for the help. – vbevan Jul 20 '12 at 8:15

Got some help from a friend who said this should work, though it's not nearly as simple as the answer from dda. Apparently this works in 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);

And it would also need the includes etc. that GreaseMonkey scripts always have.

share|improve this answer
2  
If this works, and dda's answer doesn't, then the question omitted some key javascript. The onsubmit for an <input> already looks like a transcription error as that's not valid HTML and would not fire in most (¿all?) browsers. – Brock Adams Jul 19 '12 at 7:46

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.