2010-05-19 9 views

Antwort

5

Im Grunde, was passiert, ist die onclick die Funktion ProcessResponse() genannt wird und die href-javascript:void(null) gesetzt wird, um das Standardverhalten der Verbindung zu deaktivieren.

Die meisten Entwickler sind einfach zu schreiben diese auch verwendet:

<a onclick="ProcessResponse(); return false;" href="#" >Accept Data</a> 

Beispiel:

Angenommen wir diesen Link an der richtigen Stelle:

<a onclick="ProcessResponse(); return false;" href="http://www.google.com" >Accept Data</a> 

Beachten Sie, dass href wird auf www.google.com aber wenn Sie tatsächlich auf diesen Link klicken, wäre es einfach dienennenFunktion und wird nicht auf www.google.com gehen, weil die return false nach ProcessResponse() setzen das Standardverhalten der Verbindung, die auf www.google.com geht. Gleiches gilt für den von Ihnen geposteten Link.

+4

Das ist technisch falsch. Es "deaktiviert nicht das Standardverhalten des Links", es ist eher wie ein leerer Link. Versuchen Sie nur 'javascript:' oder 'javascript: undefined'. –

+0

Man sollte das "http: //" Präfix in der href nicht vergessen. –

+2

@Andy E Kopf: Ich spreche von href auf # gesetzt. – Sarfraz

4

javascript:void(null) folgt = nichts tun.

Beachten Sie, dass es einen JavaScript-Aufruf in der onclick-Event-Handler - das tut etwas (Ich vermute, dass es akzeptiert Daten durch die Verarbeitung der Antwort;).

14

void ist ein JavaScript-Operator, wird aber manchmal wegen der üblichen Verwendung von Klammern, die ihm folgen, fälschlicherweise für eine Funktion gehalten. Der beabsichtigte Zweck von void ist, einen Ausdruck auszuwerten, ohne einen Wert zurückzugeben. Daher kann jeder Ausdruck überhaupt void ed sein, es muss nicht null sein und ziemlich oft sehen Sie void(0) oder weniger häufig, void 0.

Wenn Sie javascript: in einem href Attribut verwenden, wird der folgende Ausdruck ausgewertet und das Ergebnis wird zurückgegeben.

in die Box
javascript:prompt("test"); 

Art alles, was ok angezeigt wird, und drücken Sie die Eingabetaste/klicken: Dies kann durch Eingabe der folgenden in Ihren Browser-Adressfeld zu sehen. Sie werden feststellen, dass die Seite verschwindet und alles, was Sie eingegeben haben, erscheint. Nun sehen, was passiert, wenn wir void 0; hinzufügen:

javascript:prompt("test"); void 0; 

Nach einem Klick auf OK in der Eingabeaufforderung, passiert nichts. Das ist void 0 ‚s Hände Werk, es gibt undefined und damit der Browser tut nichts. Dies gilt für href auch in Links (zögern Sie nicht, es zu versuchen). Das Ganze könnte sogar einfach als javascript:void prompt("test"); geschrieben werden.

Wie andere bereits erwähnt haben, verwenden Sie am besten return false; von einem Event-Handler anstatt void im href. In der Tat ist es nicht empfehlenswert, javascript: im href Attribute überhaupt zu benutzen.

1

Anfügen void(0) JavaScript Anweisungen ist ein üblicher Trick, wenn Sie eine javascript: Pseudo-URL verwenden, um Code auszuführen. Wenn Sie dies unterlassen und das Skript etwas anderes als undefined zurückgibt, wird es so behandelt, als ob es an document.write übergeben wurde - das heißt, der Browser navigiert zu einer leeren Seite.

Es gibt gültige Anwendungen für diesen Trick (nämlich, Bookmarklets sollten immer so enden), aber in dem Beispiel, das Sie gaben, ist es einfach falsch, aus Gründen, die bereits von anderen erklärt wurden.