• 0

[Javascript] How to simulate a click on Firefox?


Question

Hello,

I need to click a button using Javascript. I searched the Internets and I found the following code:

	<script type="text/javascript">
		function buttonClick() {
			if (document.getElementById('send').dispatchEvent)
			{
				var mine = document.createEvent("MouseEvents");
				mine.initEvent("click", true, true);
				document.getElementById('send').dispatchEvent(mine);
			}
			else
			{
				document.getElementById('send').click();
			}
		}
	</script>

//body

<body onload="buttonClick();" onunload="buttonClick();">
</body>

At first, I was using: document.MyForm.Button.click(), it turned out that it only works with IE and throws an error in Firefox.

The above code is still working with IE, but not in Firefox and it doesn't throw an error or anything like that. It's like it's not there at all.

Any help is appreciated, thanks.

15 answers to this question

Recommended Posts

  • 0

Do not put the code you want in the button click event, put it into a function. Then call that function from the click - and you can call the function from whenever else you want too.

Or is there a situation that this would not allow?

  • 0

I'm not sure if I understood you correctly. The problem is that the button must be clicked programmatically. I have a form that I need to submit at runtime, and it requires that "button click". I'm trying to simulate a user clicking that button.

Could you give me an example please?

  • 0

<input type="button" onclick="alert('click')" />

Would become

function doClick(){
alert('click');
}

<input type="button" onclick="doClick()" />

Or even... If you want the sender to be available...

function doClick(sender){
alert(sender);
}

function simulateClick(objectId){
objMyButton = document.getElementById(objectId);
doClick(objMyButton);
}
<body onload="simulateClick('myButton')">
<input id="myButton" type="button" onclick="doClick(this)" />

  • 0

Thanks for your input, but that's not the problem I'm facing. The main issue is doing the click itself on the button, and not "onclick" or whatever. onclick implies that the button was clicked. I need to do the clicking before, right?

<body onload="simulateClick('myButton')">

That's not a click simulation, you're just calling alert(). I need a something like alert() that actually clicks the buttom (submitting the form).

  • 0

Yes and what I am saying is this:

Why do you need the physical button to be clicked?

Surely when clicked you want "something" to happen? Fine...

But shift this "something" out, and call it when the button is clicked.

You can then call it at another time also - simulating the same action as the button being clicked...

OR

Look into using jQuery? I believe this may help: http://stackoverflow.com/questions/343811/...ry-click-method

  • 0

I really appreciate your help, really. However :p, all I want is to click the button, nothing more. There is no logic, there are no routines ... nothing. It's just a matter of click that damned button !

<form id="MyForm" name="MyForm" method="post" action="https://linkgoeshere" enctype="multipart/form-data">
<input field><input field><input field>

<input type="submit" value="login" name="send" id="send" />
</form>

That's the form I have, and that's the button that must be clicked without the user actually clicking it.

Do you have *any* idea why Firefox does not allow this: document.MyForm.send.click() ? It's so simple, it works on IE but not on firefox ;(.

  • 0

I'm not sure why, but if I do form.submit() the user will be redirected to the actual form, with the fileds all filled up with the information, but he still have to click login.

The application I have at hand tried to hide all this overhead from the user. So he goes to our application, clicks a link (for example, to a specific provider), and continues without him logging in to every single provider.

For that reason, we submit that form (and all other forms) at runtime. There are some forms that works perfecty with the submit() function, and there are forms that oblige you to click the button. That's why I need to know how to click that button, or actually simulate the click as if the user actually clicked it.

Does that make any logical sense to anyone?

  • 0

Okay, lets take a form that submits a search term to Google.

<body onload="gForm.submit();">
	 <form name="gForm" method="get" action="http://www.google.com/search?hl=en&source=hp&aq=f&oq=&aqi="><input type="hidden" name="q" value="test" />
	 </form>
 </body>

That works perfectly fine, when you visit that page, you'll get redirected to Google with "test" as your search term.

I have almost the same forms, the information are coming from the database (username, password .. etc ..). As you can see, the form works fine with the submit() function. That's not the case when you have HTTPS.

I know that the form above works with the submit, but lets do it with a button, shall we?

<body>
	 <form name="gForm" method="get" action="http://www.google.com/search?hl=en&source=hp&aq=f&oq=&aqi="><input type="hidden" name="q" value="test" />
		 <input type="submit" value="submit" name="send" id="send" />
	 </form>
 </body>

How do I submit that form by clicking the button with Javascript?

If we did this:

<body[u][b] onload="gForm.send.click();"[/b][/u]>
	 <form name="gForm" method="get" action="http://www.google.com/search?hl=en&source=hp&aq=f&oq=&aqi="><input type="hidden" name="q" value="test" />
		 <input type="submit" value="submit" name="send" id="send" />
	 </form>
 </body>

It WILL work, but only in IE. Firefox throws an error.

I need to find a way to do it for both IE and Firefox.

  • 0

I'd recommend using JQuery, as it adds a nice transparency layer over the browser, so the same function call in JQuery will operate fine on both IE, Firefox, etc. Once you have referenced the JQuery library, do something like this:

$(function() {
  $("input.send").click);

Or, to just submit the form:

$(function() {
  $("form").submit();
});

The problem you will be seeing is that the click and submit actions are very different. A click event in javascript does not action a form, it literally is for clicking on the physical button. A submit event will actually do the form post.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • The look speaks volumes, doesn't it?  
    • Whatever happened to offering a desirable product is what lead to profit?
    • 2 articles down "more gamers are switching to Windows 11, according to Valve."
    • After 4 years, the w11 adoption should be huge, but thats not the case, you see adoption dropping in another post. there are so many valid reason why people stick on w10, microsoft need to stop the whole support end at october. XP and 7 had extended support until a good version of windows released that people moved on to. right now w11 its a mess, its unreliable, unstable, buggy and the forced usability downgrades. Now more than ever people have alternatives even now M$ have a version with support until 2027 and 2032. its not that hard to keep supporting 10 until then. Hopefully by then w12 release and its a good option
    • Data (Use and Access) Bill faces pushback over AI and creative rights in UK parliament by Fiza Ali Image via: BBC In recent months, a series of high‐profile controversies has highlighted growing tension between technology platforms, content creators, and regulators over how artificial intelligence is trained and used. Previously, LinkedIn admitted sharing private messages to train its models, Meta was sued in France for using copyright‐protected content without authorisation, and OpenAI is paradoxically urging US lawmakers to expand "fair use" for AI. Meanwhile, several leading publishers, among them The New York Times and The Guardian, launched a "Support Responsible AI" campaign, accusing Big Tech of profiting from unlicensed journalism. Against this backdrop, the UK’s Data (Use and Access) Bill, which would allow AI firms to use all published content unless rights-holders opt out, has stalled in Parliament, with over 300 peers demanding AI companies disclose and license any copyrighted material they employ. Baroness Beeban Kidron has proposed an amendment requiring the Secretary of State for Science, Innovation, and Technology to report on the bill’s impact on the creative industries three months after it becomes law, unless the bill is amended first. Supporters of the government’s position, including Sir Nick Clegg, former president of global affairs at Meta, argue that requiring individual licences from all rights-holders would impose an unmanageable administrative burden and could deter AI investment in the UK. They say a broad opt-out regime is necessary for innovation. Opponents counter that unlicensed use of creative content risks harming writers, musicians, filmmakers, and other creators by allowing AI tools to produce similar work without compensation. Prominent artists such as Sir Elton John, Sir Paul McCartney, and Dua Lipa have warned that unrestricted access to their work could undermine their income and legacy. The debate traces back to early AI development, when large technology firms scraped substantial amounts of text, images, and other media from the internet without paying rights-holders. In 2022, the Ninth Circuit Court of Appeals held that "data scraping" does not constitute hacking, meaning it was not illegal to harvest publicly available website content so long as no defensive measures were bypassed. Those scraped datasets were then used to train generative models capable of producing text, images, and music in the styles of established creators. The Department for Science, Innovation, and Technology is conducting a broader consultation and will not amend the bill unless changes are deemed satisfactory for creators. If the bill cannot be agreed upon, it risks being withdrawn. The current impasse reflects a wider tension between supporting AI-driven innovation and protecting the economic interests of the creative industries. Until both Houses reach a compromise or one side concedes, the bill’s future remains uncertain.
  • Recent Achievements

    • Week One Done
      Epaminombas earned a badge
      Week One Done
    • Week One Done
      Prestige Podiatry Care earned a badge
      Week One Done
    • Week One Done
      rollconults earned a badge
      Week One Done
    • One Month Later
      lilred1938 earned a badge
      One Month Later
    • Week One Done
      lilred1938 earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      134
    2. 2
      Xenon
      130
    3. 3
      ATLien_0
      123
    4. 4
      +Edouard
      102
    5. 5
      snowy owl
      95
  • Tell a friend

    Love Neowin? Tell a friend!