Остановить всплывающие события, кажется, не работает на Internet Explorer на страницах Google - PullRequest
1 голос
/ 27 января 2011

Я работаю в расширении браузера. Я размещаю значки рядом со ссылками на страницах поиска Google. Эти значки запускают некоторые действия, и мне нужно остановить всплывающие события после того, как пользователь нажмет на них. В резюме родительские теги div не должны знать о щелчках на этих значках.

Следующий код позволяет прекратить всплывающие события во всех браузерах:

if (event.cancelBubble) {
        event.cancelBubble = true;
}
if (event.returnValue) {
        event.returnValue = false;
}
if (event.stopPropagation) {
        event.stopPropagation();
}
if (event.preventDefault) {
        event.preventDefault();
}

В Firefox работает хорошо, но в этом контексте не работает в IE (по крайней мере, версия 8). Есть идеи по этому поводу?

Ответы [ 2 ]

2 голосов
/ 27 января 2011
if (event.cancelBubble) {
        event.cancelBubble = true;
}

Это не имеет смысла.Он только устанавливает true, если он уже имеет значение true (в логическом контексте).Избавьтесь от предложения if (т.е. всегда устанавливайте его безоговорочно);установка несуществующего значения обычно не приносит никакого вреда (если вы не устанавливаете его на хост-объекте, который имеет уродливую реализацию)

0 голосов
/ 27 января 2011

или попробуйте установить его в false, если вы используете true, событие будет запускать код, который появляется после того, как событие было запущено, когда событие имеет логическое значение, это может иногда означать, что у вас есть свобода контролировать это событие Если вы говорите true, событие может выполнять другие функции. при значении false событие не будет выполнять другие функции, но это зависит только от того, как эта функция.

кодер сделал свою функцию / код.

но простыми словами «Чтобы обработать или вызвать событие bubbled, элемент управления должен переопределить метод OnBubbleEvent.», И там, где вы делаете противоположное, не переопределяйте, если вы это сделали.

если ты еще не прочитал это http://msdn.microsoft.com/en-us/library/aa719644(v=vs.71).aspx и, как я сказал, сделай обратное.

; )

Надеюсь, это немного вам поможет

Laterss!

...