2016-04-26 8 views
0

Ich habe bereits über diese Frage gegangenprevent() ähnliche Funktionalität in Javascript

event.preventDefault() vs. return false

Aber hat meine Lösung nicht gefunden. Eigentlich ich JavaScript-Funktion verwende zur vorherigen Seite zurückzukehren, die auf Klick von

<a href="#" onclick="goBack()"><img src="images/backbtn.png"></a> 

Funktion fein arbeitet

function goBack(){ 
    window.history.back(); 
} 

Wenn ich auf <a> klicken enthält es # in URL, die ich will verhindern. In jquery verwenden wir preventDefault(), um das Standardereignis eines Elements zu stoppen, aber gibt es eine ähnliche Funktion in Javascript, um es zu stoppen.

Ich weiß, ich kann javascript:void(0) in href verwenden, die das Problem lösen wird, aber es kann viele andere Instanzen geben, also möchte ich über Funktion in Javascript wissen.

Ich versuchte return false; verwenden, aber es ich schreibe dies auf ähnliche

function goBack(){ 
    return false; 
    window.history.back(); 
} 

Dann stoppt er die Funktion auszuführen, und wenn ich schreibe wie dieses

function goBack(){ 
    window.history.back(); 
    return false; 
} 

Dann keine Wirkung dieser return false; . Ich bin sicher, dass es einige in Javascript gibt, da jquery von Javascript generiert wird.

Jede Hilfe wäre willkommen. Danke im Voraus!

+0

warum wollen Sie das 'window.history.back() stoppen wollen getan werden;' auf welcher Instanz? – guradio

+0

was versuchst du zu verhindern ?? Sie Frage ist nicht klar .. Der Teil, den Sie Frage gestellt haben, ist in Ordnung .. Aber wann möchten Sie das Ereignis verhindern? und wenn nicht? Wie wird das Ereignis generiert? –

Antwort

2

Event.preventDefault() funktioniert sowohl in Javasccript und JQuery

Wenn die # immer das Problem, und aus irgendeinem Grund, den Sie wirklich wollen um nur preventDefault() zu verwenden, dann müssen Sie die event in die Funktion und dann in die Funktion event.preventDefault()

<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a> 
übergeben

Dann in Ihrem Javascript verwenden Sie dieses Ereignis übergeben und das Standardverhalten zu stoppen.

function goBack(event){ 
    event.preventDefault(); 
    window.history.back(); 
} 
+0

'window.history.back()' sollte hier nicht notwendig sein. Gaurav verwendet es nur, um die '#' von der Position zu entfernen, aber mit 'preventDefault' wird' # 'nicht hinzugefügt. – szym

+0

@szym Ich glaube das Problem ist, er ist in der Lage, zurück zur vorherigen Seite gehen, aber er bekommt noch eine '#' in der vorherigen Seite url .. –

+1

eine weitere nette und gut erklärte Antwort..thanku –

0

preventDefault existiert in Javascript, aber wenn man in einem jQuery ähnliche Lösung interessiert sind, müssen Sie kümmern sich um Kompatibilitätsprobleme nehmen. Eine andere Lösung, die Kompatibilitätsprobleme mit alten Browsern bedenkt, ist:

function goBack(evt){ 
 
    var e = evt || window.event; 
 
    if (e !== undefined) { 
 
    if (e.preventDefault) { 
 
     e.preventDefault(); 
 
    } else { // IE 
 
     e.returnValue = false; 
 
    } 
 
    } 
 
    window.history.back(); 
 
}
<a href="#" onclick="goBack(event)"><img src="images/backbtn.png"></a>

1

auf die Antworten hinzuzufügen return false in jquery tut sowohl event.preventDefault und event.stopPropagation()

Von jquery Quellcode , jquery.event.dispatch

if (ret !== undefined) { 
    if ((event.result = ret) === false) { 
    event.preventDefault(); 
    event.stopPropagation(); 
    } 
} 

Sowohl preventDefault als auch stopPropagation sind in Javascript verfügbar.

Für IE < 9, event.stopPropagation kann durch event.cancelBubble = true erfolgen und event.preventDefault kann durch

Verwandte Themen