I would like to know what is the difference between javascript:; and javascript:void(0); if I use them in href attribure for a anchor (link)
<a href="javascript:;" onclick="DoSomething();">Link</a>
<a href="javascript:void(0);" onclick="DoSomething();">Link</a>
I see them acting the same on all browsers but what is the technical difference?
Regards, Magdy
3 Answers 3
One runs JavaScript that is just an empty statement, the other runs JavaScript that evaluates the statement 0 and then returns undefined.
1 Comment
Only that the latter javascript:void(0); is more readable and an accepted convention that says this code does nothing.
It's worth noting that industry standards have come a long way regarding this syntax. You should look into Progressive Enhancement.
Comments
I agree with David that neither should be used. The javascript pseudo-protocol can put the page into a waiting state in some browsers, which can have unexpected consequences. As one example, I spent hours trying to debug a web app that was crashing IE6 whenever someone clicked a javascript: link soon after the page loaded. It turned out that the page entering the waiting state was conflicting with a Flash movie trying to initialize. I solved the problem by replacing the link with one in this format:
<a href="#" onclick="DoSomething(); return false;">Link</a>
The "return false" prevents the link from actually being followed.
2 Comments
DoSomething and if it isn't ... it links to the top of the page. That is almost always going to be an awful fallback position.Explore related questions
See similar questions with these tags.
onclickattributes shouldn't be used anymore, anyway. Make sure you don't miss that very important piece of information :)