Rückgabe von false durch click-handler funktioniert nicht in Firefox
Im Beispiel unten return false
scheint nicht zu verhindern, dass die Standard-Aktion, nachdem der link geklickt wird (da die Seite scrollt nach oben) in Firefox 3.6 oder Chrome 10 funktioniert aber im Internet Explorer.
Mit event.preventDefault()
tut, was ich brauche, aber ich Frage mich, warum return false
funktioniert nicht mit den anderen.
Seite Hinweis: ich nicht brauchen, um Unterstützung für den Internet Explorer.
<script>
addEventListener("DOMContentLoaded", function(){
document.getElementById("link").addEventListener("click", function(){
alert("Clicked!");
return false;
}, false);
alert("Click handler bound!");
}, false);
</script>
<div style="margin-top: 1200px;">
<a id="link" href="#">Click me!</a>
</div>
Funktioniert nicht in Chrome entweder (jsfiddle.net/sj65N).
Nun folgt aus der Antwort, dass es funktioniert nirgendwo
Nun folgt aus der Antwort, dass es funktioniert nirgendwo
InformationsquelleAutor Eugene | 2011-03-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
return false
funktioniert cross-browser, aber nur für event-Handler zugewiesen, der "DOM0" Art und Weise, wieFür event-Handler zugewiesen, der DOM Level 2-Wege-über
addEventListener()
haben, müssen Sie aufpreventDefault()
:Für Ereignis-Listener angehängt, die über
attachEvent()
im IE, entwederreturn false
oderwindow.event.returnValue = false
tun:addEventListener
oderattachEvent
Sie zu verwirren haben mitpreventDefault()
undreturnValue
?Nein,
return false
ist gut fürattachEvent()
. Ich aktualisiert meine Antwort.OK, das scheint die richtige Antwort. Ich danke Ihnen sehr
Dies ist eine brillante Antwort. Vielen Dank für diese!
InformationsquelleAutor Tim Down
Sagen Sie "
preventDefault()
hilft", aber Sie sagen, es funktioniert nicht? Ich bin mir nicht sicher, ob ich verstehe. Haben Sie versucht, dieses:return false
nicht funktioniert, aber mitpreventDefault()
statt hilft. Ich möchte nichtpreventDefault()
weilreturn false
ist kürzer und crossbrowser.Ah, ich sehe. Wenn
return false
funktioniert nicht für andere Browser, dann ist es nicht crossbrowser. Ich bin mir ziemlich sicher, dassreturn false
ist für den IE, undpreventDefault()
ist für alle anderen.Sie irren sich. False zurückgeben, ist für beide
event.preventDefault()
ist für W3C-Modellwindow.event.returnValue = false
ist für den IE. Quelle: quirksmode.orgGut, wenn es nicht funktioniert, glaubst du nicht, Sie sollte mit seiner alternative, da Sie nicht versuchen zu unterstützen, DH. Es sei denn, Sie sind beschränkt auf die Höhe der Raum, den Sie haben, gehen von 13 Zeichen zu 19 ist nicht, dass große Sache.
Zuerst würde ich gerne wissen, warum
return false
funktioniert nicht wie vorgesehen. Das ist, warum ich diese Frage gestellt.InformationsquelleAutor Shaz
Ich habe einige cross-browser-Probleme mit der Rückkehr falschen Methode.
Ich habe Glück gehabt, nur anstelle der href des wie mit die folgenden:
Habe ich herausgefunden, dass diese leere Funktion in der href-Eigenschaft wurde der einfachste.
Habe ich die target _self Teil, weil, wenn ich mich entwickle ich gelegentlich haben diese links (, ich will einen hover-Boxen) öffnet sich in einem neuen Fenster/tab. Sie müssen hingewiesen werden auf das aktuelle Fenster, um wirklich nichts zu tun ... lol.
Hoffe das hilft wem.
Brynn
InformationsquelleAutor Brynn