Почему я не могу поймать щелчок мыши в IE? - PullRequest
1 голос
/ 23 декабря 2008

У меня есть страница, которая имеет прямоугольную область с текстом и значками, и все это кликабельно. Якорный тег установлен для отображения: блок. Один из значков имеет обработчик onclick. Если человек нажимает на значок, я просто хочу, чтобы его обработчик запускался, а не активировал тег привязки.

Firefox ведет себя так, как я хочу, а IE нет.

Итак, я попытался перехватить событие в обработчике onclick:

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

  // ... handle the click

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

Это не сработало, поэтому я подумал, что, может быть, это на самом деле события onmouseup или onmousedown, которые запускают тег привязки, поэтому я добавил метод clickSwallow в методы onmouseup и onmousedown:

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

Это тоже не сработало. В этом случае есть какие-либо идеи, как не допустить реагирования вмещающего якоря на щелчок?

Ответы [ 3 ]

3 голосов
/ 23 декабря 2008

Я бы просто использовал <span>, но я думаю, что возвращение false из обработчика событий также должно помочь.

1 голос
/ 23 декабря 2008

В этом посте есть несколько элементов, которых у вас нет (например, e.returnValue и e.preventDefault), но из текста видно, что это специфические функции FF. Возможно, стоит попробовать.

0 голосов
/ 23 декабря 2008

Попробуйте изменить свой якорь на:

<a href="javascript:void(0)"> <img src="..." onclick=".."> </a>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...