2010-08-15 6 views
4

J'ai ce problème où quand j'ai ce code HTML dans Firefox, il ouvre une nouvelle fenêtrelien Firefox à la fonction javascript ouvre une nouvelle fenêtre lorsque vous ne l'intention

<a style="float:right;" 
href='javascript:window.location.href="#";'onClick="javascript:addNewRecord();"> 
New Record</a> 

J'ai essayé self.location, window.location, #body, et # h1 comme le href.

À l'origine j'avais le code comme, mais dans Firefox qui n'a rien fait mais ouvrir une nouvelle fenêtre, et pas exécuter ma fonction. Le code fonctionne parfaitement en chrome.

<a style="float:right;" href="javascript:addNewRecord();">New Record</a> 
+0

Veuillez nous montrer votre fonction addNewRecord(). Je crois que ce problème se cache là. P.S. Vous n'avez pas besoin d'ajouter un "protocole" javascript pour les événements onclick. Ils n'existent que pour javascript et rien d'autre :) – Anpher

Répondre

3

Comment se comporte votre code dépend entièrement de ce que la fonction addNewRecord() fait (y compris ce qu'il retourne). Sans voir à l'intérieur de cette fonction, c'est difficile à dire, mais je dirais que ce qui se passe est à l'intérieur. Notez que ce que vous mettez dans la partie href = "" n'affecte probablement pas le comportement que vous voyez.

0

Essayez cette

<a onclick="javascript:addNewRecord();">New Record</a> 
4

essayer:

onClick="addNewRecord();return false" 
9

La voie en ligne canonique est

<a style="float:right;" href="#" 
onClick="addNewRecord(); return false">New Record</a> 

ou mieux:

<a style="float:right;" href="#" 
onClick="return addNewRecord()">New Record</a> 

où addNewRecord retourne false à la fin de la fonction


Une façon encore meilleure est

window.onload=function() { 
    document.getElementById("addLink").onclick=addNewRecord; 
} 
function addNewRecord() { 
    ... 
    return false; 
} 

, plus

<style> 
#addLink { float:right } 
</style> 

et

<a href="#" id="addLink">New Record</a> 

Depuis abuser du HREF sur un lien ne va nulle part juste pour obtenir un pointeur est mal, vous peut considérer un <span> avec un onclick et un curseur: pointeur. Il faut plus d'efforts pour rendre un tel élément accessible aux lecteurs d'écran, par exemple.

+0

* href = "#" * casse l'interface utilisateur flux sur les pages plus longues, car il saute la vue du navigateur vers le haut de la page. – Typel

+0

@jbalyo nope - le retour false ou a preventDefault empêchera cela de se produire. – mplungjan

+0

J'utilise href = "javascript: void (0);" pour éviter le problème de "flux". – Hobbes