modiX modiX - 4 months ago 14
HTML Question

window.setTimeout in javascript link on Firefox not working properly

Due to generic reasons I have to put some javascript into the HREF attributes of some navigation bar links to perform some more actions. Partially actions require delayed execution, thus I'm using

window.setTimeout
.

Here is a sample:

<a href="javascript:alert('do anything');window.setTimeout(function(){alert('do anything else');},1111);">Login</a>


In Google Chrome this works like expected, but on Firefox it redirects to a new empty page that contains only a random number when
window.setTimeout
is called.

Preview: http://jsbin.com/rekosahute

Why this is happening and how I can avoid that and still using HREF attributes for such actions? Specially the returned number is magic to me.

Answer

Wrapping it in an anonymous function seems to fix it:

<a href="javascript:(function(){alert('do anything');window.setTimeout(function(){alert('do anything else');},1111);})()">Login</a>

The number that is returned and displayed on the page in FF, is the return value of window.setTimeout, it's a counter incremented every time it is called, to allow you keep track of timers.

Comments