Was ist mit dem Fall, wo die Links generiert werden, während die Seite verwendet wird? Dies tritt häufig bei heutigen komplexeren Front-End-Frameworks auf.
Die richtige Lösung wäre wahrscheinlich, den Click-Ereignis-Listener auf das Dokument zu setzen. Dies liegt daran, dass Ereignisse für Elemente an ihre übergeordneten Elemente weitergegeben werden und eine Verknüpfung tatsächlich vom übergeordneten Element ausgeführt wird.
Dies funktioniert für alle Verknüpfungen, unabhängig davon, ob sie mit der Seite geladen werden oder dynamisch zu jedem Zeitpunkt am Frontend generiert werden.
function interceptClickEvent(e) {
var href;
var target = e.target || e.srcElement;
if (target.tagName === 'A') {
href = target.getAttribute('href');
//put your logic here...
if (true) {
//tell the browser not to respond to the link click
e.preventDefault();
}
}
}
//listen for link click events at the document level
if (document.addEventListener) {
document.addEventListener('click', interceptClickEvent);
} else if (document.attachEvent) {
document.attachEvent('onclick', interceptClickEvent);
}
Update: Dies ist nicht der beste Weg. 'Href =" javascript: void (0) "' ist oft besser, da die Seite nicht neu geladen werden muss. [mehr hier] (http://stackoverflow.com/questions/134845/href-attribute-for-javascript-links-or-javascriptvoid0) – worldsayshi
Beachten Sie, dass diese beiden Möglichkeiten verhindern, dass Benutzer Rechtsklick-Aktionen auf den Links verwenden (Öffnen in einem neuen Tab usw. –