2008-12-23 7 views
1

J'ai une page qui a une zone rectangulaire avec du texte et des icônes et le tout est cliquable. La balise d'ancrage est définie pour afficher: block. Une des icônes a un gestionnaire onclick. Si une personne clique sur une icône, je veux simplement que le gestionnaire onclick de l'icône soit exécuté et non que la balise d'ancrage contenant soit activée. Firefox se comporte comme je veux, IE ne fonctionne pas.Pourquoi est-ce que je ne peux pas piéger un clic de souris dans IE?

J'ai donc essayé de piéger l'événement dans le gestionnaire onclick:

function my_onclick_handler(evt){ 
    if (!evt) evt = window.event; 

    // ... handle the click 

    if (evt.stopPropagation) evt.stopPropagation(); 
    evt.cancelBubble = true; 
} 

qui ne fonctionnait pas si je pensais que peut-être il est en fait le onmouseup ou onmousedown événements qui déclenchent la balise d'ancrage alors j'ai ajouté un clickSwallow méthode à onmouseup et onmousedown méthodes:

function clickSwallow(evt){ 
    if (!evt) evt = window.event; 
    if (evt.stopPropagation) evt.stopPropagation(); 
    evt.cancelBubble = true; 
} 

Cela ne fonctionne pas non plus. Des idées comment garder l'ancre enfermant de réagir au clic dans ce cas?

Répondre

3

Je voudrais juste utiliser un <span>, mais je pense que le retour false à partir du gestionnaire d'événements devrait également faire l'affaire.

+0

Retour faux travaillé. Merci! Mais qu'entendez-vous par rapport à la durée? Mettez un span autour de l'img et ajoutez l'onclick à cela? –

+0

Je voulais dire utiliser un élément span à la place d'un élément d'ancrage, si vous ne voulez pas que les utilisateurs suivent le href de toute façon. – Triptych

+0

Oh, mais je veux que le href fonctionne généralement. Cette icône est juste pour afficher plus d'informations sur la signification de cette zone rectangulaire afin que l'utilisateur comprenne mieux pourquoi il pourrait vouloir cliquer dessus. –

0

Essayez de changer votre point d'ancrage à:

<a href="javascript:void(0)"> <img src="..." onclick=".."> </a> 
+0

Mais je veux que l'ancre fonctionne si une personne clique dans la zone rectangulaire couverte par l'ancre - tant que ce n'est pas sur une image. –

1

This post a quelques éléments à vous non (comme e.returnValue et e.preventDefault) mais du texte, il apparaît ce sont des fonctions spécifiques FF. Cela pourrait valoir la peine d'être photographié.

+0

merci. Je vérifierai. –

Questions connexes