Over javascript:void(0)
Soms kom je deze HTML/JavaScript code tegen:
<a href="javascript:void()">Link tekst</a>
.
Dit verhaal gaat over de function void(). Om precies te zijn: waarom je het niet hoeft te gebruiken.
Er zijn gebruikers die JavaScript uit veiligheidsoverwegingen hebben uitgeschakeld in de browser. Er is een tijd geweest dat dat niet onverstandig was. Zo was het ooit mogelijk om met JavaScript op de harddisk van de gebruikers te kijken en te wijzigen. Dat is echter voorbij. Tegenwoordig is het zo dat elke website wel iets van JavaScript gebruikt waardoor het uitschakelen van JavaScript eigenlijk alleen maar hinderlijk is. Een website die void() gebruikt vertoont zeker ongewenst gedrag als JavaScript in de browser is uitgeschakeld.
Elke JavaScript-function retourneert een waarde. Als je niets opgeeft is dat true
.
Oorspronkelijk was de —standaard in JavaScript aanwezige— function bedoeld om geen waarde terug te geven.
De belangrijkste (enige?) toepassing werd om te zorgen dat het href-attribuut geen invloed had omdat de functionaliteit
werd geregeld met onclick. Vooral bij menu's zag (en zie) je dat vaak.
Voor dat soort links werd en wordt vaak href="#" gebruikt. Dat heeft het nadeel dat de pagina met de hyperlink
bij aanklikken naar boven scrollt, of zelfs opnieuw wordt geladen.
In de huidige stand van de techniek is het toegestaan om het href-attribuut helemaal weg te laten. Constructies
zoals met href="javascript:void()" en href="#" zijn daarmee overbodig.
Daarbij komt dat het hierboven besproken gebruik van de JavaScript-function void() sinds de standaard ES5 obsolete
is. In de huidige versie ES6 is void() nog steeds aanwezig, maar lijkt de functionaliteit te zijn gewijzigd. De achterwaartse
compatibiliteit is echter goed, zodat bestaande scipts niet behoeven te worden aangepast.