2009-05-08 12 views
3

HI,javascript void (0) problème dans IE

Je développe une page Web en utilisant asp.net. J'utilise des liens dans ma page Web. Pour cela, j'ai utilisé un code comme celui-ci.

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

et dans la méthode ChangeLoc() je l'ai écrit événement __doPostBack.

Cela fonctionne très bien dans IE7 installé sur ma machine. Mais dans IE6 dans une autre machine, il n'invoque pas l'événement __doPostBack.

Modifier

Quand je change le vide (0) dans href il fonctionne très bien.

Je voudrais savoir si c'est un bogue avec IE ou un problème JavaScript.

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

Qu'est-ce que votre fonction ChangeLoc() ressembler? – pkaeding

+1

Il y a quatre camps. Les trois que vous décrivez, et le groupe qui sont corrects et utilisent l'amélioration progressive: http://icant.co.uk/articles/pragmatic-progressive-enhancement/ – Quentin

Répondre

12

href et onclick à la fois faire virer lorsque vous cliquez sur un élément, vous écrasez l'événement onclick avec vide()

changement

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

ou avec jQuery.

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

Vous avez une erreur? Si oui, quelle erreur obtenez-vous dans IE6? Pouvez-vous poster le code pour ChangeLoc()? Aussi, essayez de changer votre balisage à ce qui suit et voyez si vous obtenez le même résultat:

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

Edit: supprimé « javascript: » de la onclick

+0

Non, il n'y a pas d'erreur. Si je change le vide (0) alors cela fonctionne bien. Je demandais si c'était un bug avec IE ou un void (0) probelm – rahul

+2

Adam: il n'y a pas besoin ou utiliser pour le javascript: prefix onclick. http://stackoverflow.com/questions/372159/do-you-ever-need-to-specify-javascript-in-an-onclick – Shog9

0

il est bon d'utiliser <a> -Element pour appeler des fonctions javascript. Utilisez style <span onclick="my_function()" class="looks_like_hyperlink">...</span>

+1

Cela le rend inaccessible aux personnes utilisant des dispositifs non pointés (claviers, commutateurs de souffle, etc.). Liens ou boutons sont la voie à suivre (conçu avec des principes d'amélioration progressive). – Quentin

1

Vous pouvez également utiliser la syntaxe javascript discret:

<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

Vous devriez éviter d'utiliser l'attribut "onclick" et en général d'écrire javascript dans votre "href" ou tout autre attribut. Il est toujours préférable d'ajouter des écouteurs d'événement à l'extérieur et de garder votre code html propre. –