2009-05-08 10 views
3

HI,JavaScript void (0) Problem in IE

Ich entwickle eine Webseite mit asp.net.

Ich verwende einige Links auf meiner Webseite. Dafür habe ich einen Code wie diesen verwendet.

<a href="javascript:void(0);" onclick="javascript:ChangeLoc('TEST','');">Test</a> 

und in der ChangeLoc() Methode, die ich __doPostBack Ereignis geschrieben.

Dies funktioniert einwandfrei in IE7 in meiner Maschine installiert. Aber in IE6 in einem anderen Computer ruft es das Ereignis __doPostBack nicht auf.

bearbeiten

Wenn ich die void (0) in href ändern es gut funktioniert.

Ich würde gerne wissen, ob es ein Bug mit IE oder ein JavaScript-Problem ist.

function ChangeLoc(param, arg) 
{ 
    __doPostBack (param, arg) 
} 
+0

Was macht Ihr ChangeLoc() Funktion aussehen? – pkaeding

+1

Es gibt vier Camps. Die drei, die Sie beschreiben, und die Gruppe, die korrekt sind und progressive Verbesserung verwenden: http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin

Antwort

12

href und Onclick beide gefeuert werden, wenn Sie auf ein Element, überschreiben Sie das Onclick-Ereignis mit Void()

Änderung

<a href="#" onclick="ChangeLoc();return false">test</a> 

oder mit jQuery.

$(function(){ 
    $("#linkId").click(function(event){ 
     ChangeLoc(); 
     event.preventDefault(); 
    }); 
}); 
3

Haben Sie einen Fehler erhalten? Wenn ja, welchen Fehler haben Sie in IE6? Können Sie den Code für ChangeLoc() veröffentlichen? Versuchen Sie auch, Ihre Markup auf die folgende verändern und sehen, ob Sie das gleiche Ergebnis:

<a href="#" onclick="ChangeLoc(); return false;">Test</a> 

Edit: entfernt ‚javascript:‘ aus dem Onclick

+0

Nein, es gibt keinen Fehler. Wenn ich die Leere (0) ändere, funktioniert es gut. Ich habe gefragt, ob es ein Fehler mit IE oder ein void (0) probelm war – rahul

+2

Adam: es gibt keine Notwendigkeit oder Verwendung für das javascript: Präfix in onclick. http://stackoverflow.com/questions/372159/do-you-ever-need-to-specify-javascript-in-an-onclick – Shog9

0

es ist nicht gut <a> -elementigen zu verwenden für JavaScript-Funktionen aufrufen. Verwenden gestylt <span onclick="my_function()" class="looks_like_hyperlink">...</span>

+1

Dies macht es für Menschen nicht-Zeigegeräte (Tastaturen, Atemschalter, etc.)). Links oder Schaltflächen sind der Weg zu gehen (mit progressiven Verbesserungsprinzipien entworfen). – Quentin

1

Sie können auch unaufdringliche Javascript Syntax:

<a href="index.html" id="chngLink">test</a> 

<script type="text/javascript"> 
document.getElementById("chngLink").onclick = function(e) { 
    if (e && e.preventDefault) { 
     e.preventDefault(); 
    } 
    ChangeLoc('TEST',''); 
    return false; 
}; 
</script> 
+0

Sie sollten vermeiden, "onclick" -Attribut zu verwenden und im Allgemeinen Javascript in Ihrem "href" oder irgendeinem anderen Attribut zu schreiben. Es ist immer besser, Event-Listener außerhalb hinzuzufügen und den HTML-Code sauber zu halten. –

Verwandte Themen