В чем разница между щелчком по фокусу и фокусировкой по javascript? - PullRequest
0 голосов
/ 12 апреля 2009

Я встретил одну хлопотную веб-страницу, структура которой сложна. Если щелкнуть мышью по одному DIV , все в порядке. Однако, если он сфокусирован с помощью javascript (т.е. divElement.focus). Макет превращается в грязный. Это происходит только в IE7 / 8.

Итак, есть ли разница между щелчком по фокусу и фокусировкой по javascript в IE?

Ответы [ 3 ]

3 голосов
/ 12 апреля 2009

Запуск события Javascript focus не вызывает событие click. Не видя соответствующего кода, я вынужден догадаться, что имеется какой-то обработчик click, который не вызывается в случае, когда вы запускаете событие focus.

Вместо этого вы можете попробовать выстрелить click:

var clickEvent;
if(document.createEvent) {
    clickEvent = document.createEvent('click');
    clickEvent.initMouseEvent('click');
    divElement.dispatchEvent(clickEvent);
} else {
    // Semi-pseudocode for IE, not tested, consult documentation if it fails
    clickEvent = document.createEventObject();
    divElement.fireEvent('onclick');
}

Или, если вы любите jQuery:

$(divElement).click();

Есть аналогичные решения и для Prototype (поиск Event.simulate).

0 голосов
/ 12 апреля 2009

Это происходит только в IE7 / 8.

Хм, тогда я уверен, что это ошибка, связанная с IE. Неудивительно. Если речь идет о законных событиях Javascript, они должны запускаться равномерно во всех браузерах.

0 голосов
/ 12 апреля 2009

Определение действия Фокус состоит в том, чтобы привести ввод (клавиатуру или мышь) к определенному элементу, обычно к полю ввода. Когда элемент получает фокус, происходит событие OnFocus. Когда он теряет фокус, вызывается событие OnBlur.

Что вы обычно получаете, нажимая, это событие OnClick, которое не обязательно связано с двумя выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...