What is the difference between the following?
onClick="javascript: function('value');"onClick="function('value');"
When do I use the javascript: before the function call, and why?
Can I call the function without using javascript: prefix?
Please help me understand the difference.
In an element’s inline event handler, like
onclick,onchange,onsubmit, etc., you do not need thejavascript:prefix – the reason you often see it is because people confuse it with thehrefsyntax that I explain below. It doesn’t cause an error – I believe it is interpreted as a label – but it is unnecessary.It doesn’t matter whether you want to call a function or run a “simple” JS statement, either way don’t include
javascript:– that is, all three of these are valid:If you are using inline event attributes don’t use the
javascript:prefix.(I say “if you are using inline event attributes” because this practice is really outdated: it is better to assign the event handlers using JS in a script block.)
You only need the
javascript:prefix when you want to run JavaScript from an<a>element’shrefattribute like this:That is because the browser normally expects the
hrefto contain a URI, so thejavascript:prefix tells it to expect JS code instead. However, I don’t recommending doing that because the page won’t work for people who have JS disabled. Better to include anhrefthat directs the user to a page telling them to enable JS, and include anonclickto do the JS functionality:That way the link does something useful for users whether they have JS enabled or not. The
return falseat the end of the click handler prevents the default behaviour for a click (which would be to navigate to the specified URL).