Ich habe mehrere Antworten hier gesehen, die erklären, dass e.preventDefault()
und return false
einen Link vom Brennen verhindern können, aber es funktioniert nicht für mich. Hier ist mein Code erforderlich, um zu replizieren.e.preventDefault() und return false verhindern nicht, dass der Link ausgelöst wird
HTML
<div id="content">
<p class="foo">Paragraph</p>
<hr>
<a href="google.com" class="link">Link</a>
</div>
JS
document.addEventListener("DOMContentLoaded", function (event) {
var page_content_links = document.querySelectorAll('#content a');
for (var i = 0; i < page_content_links.length; i++) {
page_content_links[i].addEventListener('click', function (event) {
console.log('here');
event.preventDefault();
return false;
});
}
});
ist hier ein jsfiddle des Problem demonstriert.
https://jsfiddle.net/beLn9146/4/
Das Verhalten, das ich will, ist, dass, wenn der Link angeklickt wird, wird der Browser nicht folgen und bleibt auf der gleichen Seite. Der Grund ist offensichtlicher, wenn der vollständige Code angezeigt wird, das Problem jedoch oben repliziert wird.
Um Fehler zu beheben, fügte ich ein Konsolenprotokoll hinzu, um sicherzustellen, dass es e.preventDefault()
und return false
traf, und es ist. Ich habe auch die beiden Methoden isoliert ausprobiert. Ich verwende Chrome aktuell.
Wie kann ich verhindern, dass eine Verbindung ausgelöst wird, und warum gibt mein Code dieses Verhalten nicht?
** Update: ** Aktualisierter Code und JS-Geige stimmen mit der Ereignisvariable überein, und das Problem besteht weiterhin.
'e' in Ihrem Code zu dem Ereignisobjekt bezieht sich nicht! – undefined
@Vohuman In diesem Fall sollte 'return false;' die Umleitung stoppen. – Tushar
Nein, der Fehler (ein ReferenceError) stoppt die Ausführung der folgenden Zeilen. – undefined