JavaScript Void 0 Fehler beheben Sie schnell und einfach in Chrome, Firefox, Edge und Safari – mit unseren Schritt-für-Schritt-Anleitungen für alle Browser.

Wenn im Browser plötzlich javascript:void(0) erscheint oder ein Link keine Aktion auslöst, steckt oft ein klassischer Fehler dahinter. Dieser Ausdruck ist kein Bug an sich, sondern ein bewusstes JavaScript-Konstrukt – jedoch kann er in falschem Kontext zu echten Problemen führen.
In diesem Artikel erfahren Sie genau, was javascript:void(0) bedeutet, warum Fehler entstehen und wie Sie diese Schritt für Schritt beheben.
Was bedeutet javascript:void(0) überhaupt?
Bevor Sie einen Fehler beheben können, sollten Sie verstehen, womit Sie es zu tun haben. void(0) ist ein JavaScript-Operator, der jeden Ausdruck auswertet und dabei stets undefined zurückgibt. Der Wert 0 wird übergeben, weil er der einfachste mögliche Ausdruck ist – er hat keinerlei Bedeutung außer der, dass void ihn verarbeiten kann.
Im Zusammenhang mit HTML-Links wird javascript:void(0) traditionell so verwendet:
<a href="javascript:void(0)">Klick mich</a>
Dadurch wird verhindert, dass der Browser beim Klick auf den Link zur nächsten Seite navigiert oder nach oben springt. Der Link „tut nichts“ – zumindest standardmäßig. Zusätzlich wird dann meistens ein JavaScript-Event-Listener eingebunden, der die eigentliche Funktion übernimmt.
Das Problem: Viele Entwickler verwenden dieses Muster falsch, veraltet oder in Kombination mit modernen Frameworks, wo es zu Konflikten führt. Deshalb ist es wichtig, die Ursache des Fehlers genau zu identifizieren.
Warum erscheint javascript:void(0) als Fehler oder Problemquelle?
Es gibt verschiedene Szenarien, in denen javascript:void(0) zu Problemen führt. Außerdem unterscheiden sich die Fehlerbilder je nach Umgebung erheblich.
Szenario 1: Der Link tut gar nichts
Das häufigste Problem ist, dass ein Link mit href="javascript:void(0)" nach einem Klick einfach nichts bewirkt. Das passiert, wenn der zugehörige Event-Listener fehlt oder falsch registriert wurde. Deshalb prüft man in solchen Fällen zuerst, ob das JavaScript überhaupt geladen wurde.
Ursachen können sein:
- Falsche Reihenfolge von Script-Tags im HTML
- Fehler in einer anderen JavaScript-Datei, die die Ausführung unterbricht
- Content Security Policy (CSP), die
javascript:-URLs blockiert - JavaScript ist im Browser deaktiviert
Szenario 2: Die Konsole zeigt einen Fehler mit void(0)
Manchmal erscheint in der Browser-Konsole eine Fehlermeldung, die direkt auf void(0) verweist. Zudem kann der Fehler indirekt durch einen zurückgegebenen undefined-Wert ausgelöst werden, der in einer Funktion nicht erwartet wird.
Beispiel für einen typischen Folgefehler:
const result = someFunction; // gibt undefined zurück
result.doSomething; // TypeError: Cannot read properties of undefined
Hier ist void(0) nicht direkt schuld – jedoch zeigt sich, dass eine Funktion unerwartet undefined zurückgibt, was auf eine ähnliche Logik wie void hindeutet.
Szenario 3: CSP blockiert javascript:-URLs
Content Security Policy ist eine moderne Sicherheitsfunktion im Browser, die bestimmte Ressourcen und Ausführungen einschränkt. Deshalb blockieren viele moderne Webserver oder Frameworks – zum Beispiel Next.js, Nuxt oder SvelteKit – javascript:-URLs standardmäßig. In diesem Fall erscheint in der Konsole eine Meldung wie:
Refused to execute inline script because it violates the following Content Security Policy directive
Zusätzlich zeigt der Browser manchmal an, dass die Navigation zu javascript:void(0) blockiert wurde.
javascript:void(0) in reinem HTML beheben
Wenn Sie mit reinem HTML und JavaScript ohne Framework arbeiten, gibt es mehrere Möglichkeiten, das Problem zu lösen.
Lösung 1: Event-Listener korrekt registrieren
Stellen Sie sicher, dass der Event-Listener nach dem Laden des DOM registriert wird. Verwenden Sie dazu DOMContentLoaded:
document.addEventListener('DOMContentLoaded', function {
const link = document.getElementById('meinLink');
link.addEventListener('click', function (event) {
event.preventDefault;
// Ihre Logik hier
console.log('Link wurde geklickt');
});
});
Wichtig: Das event.preventDefault übernimmt hier die Aufgabe, die früher javascript:void(0) hatte – es verhindert das Standardverhalten des Links. Außerdem ist diese Methode deutlich sauberer und moderner.
Lösung 2: href=“#“ mit preventDefault kombinieren
Eine weitere empfohlene Vorgehensweise ist der Einsatz von href="#" in Kombination mit event.preventDefault:
<a href="#" id="meinLink">Klick mich</a>
document.getElementById('meinLink').addEventListener('click', function (e) {
e.preventDefault;
// Aktion ausführen
});
Dadurch entfällt javascript:void(0) vollständig. Zudem funktioniert diese Methode auch dann noch, wenn JavaScript deaktiviert ist – der Link springt dann zwar nach oben, aber löst keinen Fehler aus.
Lösung 3: Button statt Anchor-Tag verwenden
Wenn ein Element keine echte URL als Ziel hat, sollten Sie grundsätzlich keinen <a>-Tag verwenden. Stattdessen empfiehlt sich ein <button>-Element:
<button type="button" id="meinButton">Klick mich</button>
document.getElementById('meinButton').addEventListener('click', function {
// Aktion ausführen
});
Das ist semantisch korrekt, zugänglich (barrierefrei) und außerdem einfacher zu stylen.
javascript:void(0) in React beheben
In React taucht javascript:void(0) häufig in älterem Code oder in Komponenten auf, die aus reinem HTML migriert wurden. Jedoch ist dieser Ansatz in React nicht empfohlen.
Problem: Direkte href-Verwendung
// Schlechte Praxis:
<a href="javascript:void(0)" onClick={handleClick}>Klick</a>
React zeigt dafür in der Konsole eine Warnung, da javascript:-URLs als Sicherheitsrisiko eingestuft werden. Deshalb sollten Sie diesen Ansatz unbedingt vermeiden.
Empfohlene Lösung in React
Verwenden Sie stattdessen onClick mit event.preventDefault oder direkt einen <button>:
function MeinKomponent {
const handleClick = (e) => {
e.preventDefault;
console.log('Geklickt');
};
return (
<a href="#" onClick={handleClick}>
Klick mich
</a>
);
}
Noch besser ist jedoch der Einsatz eines <button>-Elements:
function MeinKomponent {
const handleClick = => {
console.log('Geklickt');
};
return (
<button type="button" onClick={handleClick}>
Klick mich
</button>
);
}
Zusätzlich können Sie mit CSS button { background: none; border: none; cursor: pointer; } das Button-Element optisch wie einen Link gestalten.
React Router: Navigationsfehler vermeiden
In Kombination mit React Router entsteht ein weiterer häufiger Fehler: Entwickler verwenden href anstelle von to beim <Link>-Komponent:
// Falsch:
<a href="/seite">Zur Seite</a>
// Richtig:
import { Link } from 'react-router-dom';
<Link to="/seite">Zur Seite</Link>
Deshalb sollten Sie in React-Projekten stets den <Link>-Komponent von React Router verwenden, wenn Sie interne Navigation brauchen.
javascript:void(0) in Vue.js beheben
Auch in Vue.js begegnet man javascript:void(0) gelegentlich in Legacy-Code oder bei der Migration älterer Projekte. Außerdem kann eine falsche Event-Behandlung zu ähnlichen Symptomen führen.
Empfohlene Vorgehensweise in Vue.js
Vue bietet mit @click.prevent einen eleganten Weg, das Standardverhalten zu unterbinden:
<template>
<a href="#" @click.prevent="handleClick">Klick mich</a>
</template>
<script>
export default {
methods: {
handleClick {
console.log('Geklickt');
}
}
};
</script>
Der Modifier .prevent entspricht dabei event.preventDefault – jedoch ist er in Vue deutlich kürzer und lesbarer. Zusätzlich können Sie .stop verwenden, um die Event-Propagation zu stoppen:
<a href="#" @click.prevent.stop="handleClick">Klick</a>
Ebenso empfiehlt sich auch in Vue der Einsatz von <button> für Aktionen ohne Navigationsziel.
javascript:void(0) in Angular beheben
In Angular ist javascript:void(0) ebenfalls veraltet und kann zu Sicherheitsproblemen führen, da Angulars DomSanitizer solche URLs als unsicher einstuft.
Fehler: Angular blockiert javascript:-URLs
Angular wirft in diesem Fall eine Fehlermeldung:
unsafe value used in a resource URL context
Deshalb sollte diese Schreibweise in Angular-Projekten grundsätzlich vermieden werden.
Empfohlene Lösung in Angular
Verwenden Sie Event-Binding mit (click) und $event.preventDefault:
<a href="#" (click)="handleClick($event)">Klick mich</a>
handleClick(event: Event): void {
event.preventDefault;
console.log('Geklickt');
}
Außerdem können Sie routerLink verwenden, wenn es sich um interne Navigation handelt:
<a routerLink="/zielseite">Zur Zielseite</a>
javascript:void(0) in Next.js und Nuxt beheben
Next.js und Nuxt blockieren javascript:-URLs über ihre standardmäßige Content Security Policy. Deshalb erscheinen in diesen Frameworks häufig Fehler, obwohl der Code in einer einfachen HTML-Datei problemlos funktioniert hätte.
Next.js: Link-Komponent nutzen
In Next.js sollten Sie stets den eingebauten <Link>-Komponent verwenden:
import Link from 'next/link';
export default function MeineSeite {
return <Link href="/ziel">Zur Zielseite</Link>;
}
Für reine Klick-Aktionen ohne Navigation verwenden Sie in Next.js:
<button type="button" onClick={ => console.log('Geklickt')}>
Klick mich
</button>
Nuxt: NuxtLink verwenden
In Nuxt 3 steht der <NuxtLink>-Komponent bereit:
<NuxtLink to="/ziel">Zur Zielseite</NuxtLink>
Deshalb ist in beiden Frameworks der Einsatz von javascript:void(0) weder nötig noch empfehlenswert.
Fehlersuche in der Browser-Konsole
Wenn Sie den Fehler nicht auf Anhieb finden, hilft eine systematische Fehlersuche. Außerdem bietet jeder moderne Browser hervorragende Werkzeuge dafür.
Schritt 1: Entwicklertools öffnen
Öffnen Sie in Google Chrome, Mozilla Firefox, Microsoft Edge oder Apple Safari die Entwicklertools:
- Windows/Linux:
F12oderStrg+Umschalt+I - macOS:
Cmd+Option+I
Schritt 2: Konsole prüfen
Wechseln Sie zum Tab „Console“. Dort erscheinen alle JavaScript-Fehler. Suchen Sie nach:
- TypeError: Hinweis auf
undefined-Werte - ReferenceError: Funktion oder Variable nicht gefunden
- CSP-Fehler: Blockierung durch Sicherheitsrichtlinien
Schritt 3: Netzwerk-Tab prüfen
Manchmal scheitert das Laden einer JavaScript-Datei, weshalb der Event-Listener nie registriert wird. Deshalb prüfen Sie im Tab „Network“, ob alle Skripte mit Status 200 geladen wurden.
Schritt 4: Breakpoints setzen
Mit Breakpoints können Sie den Code Zeile für Zeile durchgehen. Klicken Sie dazu im Tab „Sources“ auf die Zeilennummer des verdächtigen Codes. Dadurch stoppt die Ausführung genau an dieser Stelle, und Sie können Variablenwerte prüfen.
Sicherheitsrisiken von javascript:void(0)
Neben den technischen Problemen gibt es außerdem einen wichtigen Sicherheitsaspekt. javascript:-URLs sind ein häufiges Angriffsvektor für Cross-Site-Scripting (XSS). Deshalb empfehlen Sicherheitsstandards wie das OWASP sowie die W3C-Richtlinien, auf javascript:-URLs in href-Attributen zu verzichten.
Ein Angreifer könnte zum Beispiel versuchen, in einem schlecht gesicherten System folgenden Code einzuschleusen:
<a href="javascript:stehlePasswörter">Gratis Download</a>
Deshalb filtern moderne Browser und Frameworks javascript:-URLs zunehmend heraus. Zudem ist dies einer der Hauptgründe, warum React und Angular entsprechende Warnungen ausgeben.
Empfohlene Vorgehensweisen für sauberen Code
Damit javascript:void(0) in Ihrem Code keine Probleme mehr verursacht, sollten Sie die folgenden Vorgehensweisen einhalten.
1. Verwenden Sie event.preventDefault statt javascript:void(0)
Diese Methode ist moderner, lesbarer und sicherer. Außerdem funktioniert sie zuverlässig in allen Browsern.
2. Nutzen Sie semantisch korrekte HTML-Elemente
Links (<a>) dienen zur Navigation. Aktionen ohne Navigationsziel gehören in <button>-Elemente. Deshalb verbessert das auch die Barrierefreiheit und die SEO.
3. Verzichten Sie auf Inline-JavaScript in HTML-Attributen
Statt onclick="javascript:void(0)" sollten Sie stets externe Event-Listener verwenden. Zusätzlich erleichtert das die Wartung und das Testen des Codes.
4. Prüfen Sie die Content Security Policy Ihres Projekts
Insbesondere bei Frameworks wie Next.js, Nuxt oder SvelteKit sollten Sie die CSP-Einstellungen kennen. Deshalb empfiehlt sich ein Blick in die jeweilige Dokumentation.
5. Lassen Sie Ihren Code von einem Linter prüfen
Tools wie ESLint mit dem Plugin eslint-plugin-jsx-a11y weisen automatisch auf problematische Verwendungen hin. Außerdem können Sie mit eslint-config-react-app eine solide Grundkonfiguration für React-Projekte nutzen.
Unterschied zwischen void(0), undefined und null
Da diese Begriffe in der Fehlersuche häufig auftauchen, ist es hilfreich, sie zu unterscheiden.
| Ausdruck | Wert | Typ |
|---|---|---|
void(0) | undefined | undefined |
undefined | undefined | undefined |
null | null | object |
void(0) und undefined sind funktional identisch – jedoch hat undefined den Nachteil, dass es in älteren JavaScript-Umgebungen überschrieben werden konnte. Deshalb wurde void(0) früher bevorzugt. In modernen JavaScript-Versionen (ab ES5) ist undefined jedoch unveränderlich, weshalb dieser Vorteil entfällt.
javascript:void(0) in Bookmarklets und Browser-Extensions
Ein spezieller Anwendungsfall, in dem javascript:void(0) heute noch legitim eingesetzt wird, sind Bookmarklets. Das sind kleine JavaScript-Snippets, die als Browser-Lesezeichen gespeichert werden.
Beispiel eines Bookmarklets:
javascript:void(alert('Hallo Welt'));
Hier ist void nötig, um zu verhindern, dass der Browser die Seite durch den Rückgabewert von alert ersetzt. Außerdem ist dies einer der wenigen Kontexte, in denen javascript:void(0) nicht nur akzeptabel, sondern notwendig ist.
Ebenso verwenden manche ältere Browser-Extensions dieses Muster. Deshalb sollten Sie beim Debuggen von Erweiterungen diesen Kontext im Hinterkopf behalten.
Häufige Irrtümer rund um javascript:void(0)
Viele Entwickler tappen in die gleichen Fallen. Deshalb ist es nützlich, diese zu kennen.
Irrtum 1: „void(0) ist immer ein Fehler“
Tatsächlich ist void(0) ein gültiger JavaScript-Ausdruck. Jedoch ist seine Verwendung in modernem Webentwicklungs-Code in den meisten Fällen nicht empfehlenswert.
Irrtum 2: „void(0) und return false sind gleichwertig“
Das stimmt nicht. return false in einem jQuery-Event-Handler ruft sowohl event.preventDefault als auch event.stopPropagation auf. Deshalb sind die Auswirkungen verschieden.
Irrtum 3: „href=’#‘ ist dasselbe wie href=’javascript:void(0)'“
Beide verhindern die Navigation – jedoch springt href="#" nach oben auf der Seite, sofern kein preventDefault eingesetzt wird. javascript:void(0) tut das hingegen nicht.
Debugging-Checkliste für void(0)-Fehler
Wenn Sie einen Fehler rund um javascript:void(0) beheben möchten, gehen Sie diese Checkliste durch:
- ✅ Ist JavaScript im Browser aktiviert?
- ✅ Laden alle Skript-Dateien korrekt (Status 200)?
- ✅ Ist der Event-Listener nach dem DOM-Laden registriert?
- ✅ Blockiert die CSP die
javascript:-URL? - ✅ Gibt es JavaScript-Fehler, die die Ausführung unterbrechen?
- ✅ Wurde
event.preventDefaultkorrekt aufgerufen? - ✅ Wird ein Framework verwendet, das
javascript:void(0)ablehnt? - ✅ Ist das HTML-Element semantisch korrekt (
<a>vs.<button>)?
Deshalb ist diese Checkliste ein hilfreicher Einstiegspunkt, bevor Sie tiefer in die Fehlersuche einsteigen.
Häufige Fragen zu javascript:void(0)-Fehlern
Was bedeutet javascript:void(0) in einem Link?
javascript:void(0) ist ein Ausdruck, der in href-Attributen verwendet wird, um die Standardnavigation eines Links zu verhindern. Dabei gibt void immer undefined zurück, wodurch der Browser keine neue Seite lädt. Deshalb wird dieses Muster traditionell eingesetzt, wenn ein Link nur eine JavaScript-Aktion auslösen soll.
Warum blockiert mein Browser javascript:void(0)?
Moderne Browser und Frameworks wie Next.js, Nuxt oder Angular blockieren javascript:-URLs über die Content Security Policy (CSP). Deshalb erscheint in der Konsole eine Fehlermeldung. Ersetzen Sie in solchen Fällen javascript:void(0) durch href="#" mit event.preventDefault.
Ist javascript:void(0) ein Sicherheitsrisiko?
Ja, javascript:-URLs können ein Angriffsvektor für Cross-Site-Scripting (XSS) sein. Deshalb empfehlen Sicherheitsstandards wie OWASP, auf diese URLs zu verzichten. Stattdessen sollten Sie Event-Listener und event.preventDefault verwenden.
Wie ersetze ich javascript:void(0) in React?
In React ersetzen Sie javascript:void(0) am besten durch einen <button>-Komponent mit einem onClick-Handler oder durch <a href="#" onClick={e => e.preventDefault}>. Zusätzlich warnt React in der Konsole, wenn javascript:-URLs verwendet werden.
Warum funktioniert mein Link mit javascript:void(0) nicht mehr?
Häufig liegt das an einem JavaScript-Fehler in einer anderen Datei, der die Ausführung unterbricht, an einer nicht korrekt registrierten Event-Listener-Funktion oder an einer CSP-Einstellung. Deshalb sollten Sie zuerst die Browser-Konsole prüfen.
Was ist der Unterschied zwischen void(0) und event.preventDefault?
javascript:void(0) verhindert die Standardnavigation im href-Attribut. event.preventDefault hingegen ist eine moderne JavaScript-Methode, die das Standardverhalten eines beliebigen Ereignisses unterbindet. Deshalb ist event.preventDefault flexibler und in modernem Code vorzuziehen.
Kann ich javascript:void(0) in Bookmarklets verwenden?
Ja, Bookmarklets sind einer der wenigen legitimen Anwendungsfälle für javascript:void(0) im Jahr 2026. Dort verhindert void, dass der Browser die aktuelle Seite durch den Rückgabewert des Skripts ersetzt. Deshalb ist diese Verwendung korrekt und gewollt.
Wie behebe ich void(0) in älterem jQuery-Code?
In jQuery ersetzen Sie javascript:void(0) durch return false am Ende des Click-Handlers oder durch event.preventDefault. Außerdem sollten Sie prüfen, ob jQuery überhaupt korrekt geladen wurde, da fehlende Bibliotheken häufig zu Klick-Fehlfunktionen führen.
Was gibt void in JavaScript zurück?
void gibt immer undefined zurück, unabhängig davon, welcher Ausdruck übergeben wird. Deshalb ist void(0), void(false) oder void('Hallo') funktional identisch. Der Operator berechnet den Ausdruck, verwirft jedoch das Ergebnis.
Wie finde ich die Ursache eines void(0)-Fehlers in der Konsole?
Öffnen Sie die Browser-Entwicklertools mit F12 und wechseln Sie zum Tab „Console“. Suchen Sie dort nach TypeError, ReferenceError oder CSP-Warnungen. Zusätzlich können Sie im Tab „Sources“ Breakpoints setzen, um die Codeausführung Schritt für Schritt zu verfolgen.
Fazit
javascript:void(0) ist kein Fehler an sich – jedoch gehört es in modernen Webprojekten der Vergangenheit an. Mit event.preventDefault, semantisch korrekten <button>-Elementen und framework-eigenen Lösungen wie <Link> in React oder <NuxtLink> in Nuxt lassen sich alle Anwendungsfälle sauber und sicher abdecken.
Beheben Sie bestehende Fehler systematisch mithilfe der Browser-Konsole, einer klaren Debugging-Checkliste und den beschriebenen Code-Alternativen. Deshalb lohnt es sich, bestehenden Legacy-Code Schritt für Schritt zu modernisieren – Ihre Nutzer und Suchmaschinen danken es Ihnen.
