Является ли наличие нескольких обработчиков событий onmouseup действительным HTML? - PullRequest
1 голос
/ 08 июня 2009

Я возвращаю html в JSP и заметил, что в коде есть несколько атрибутов onmouseup для кнопки.

Это действительный html, кажется, работает, но действителен ли он?

Ответы [ 4 ]

2 голосов
/ 08 июня 2009

Да , у вас может быть несколько прослушивателей событий, и нет, использование нескольких атрибутов некорректно (см. Мой комментарий).

1 голос
/ 08 июня 2009

Здесь является хорошим примером digital-эфира того, как правильно подключить несколько обработчиков, которые работают как в браузерах, соответствующих стандартам, так и в IE:

/**
* Add events
* @param Object HTML Element
* @param string name of trigger
* @param string name of function to attach
* @param bool capture
*/
addEvent = function(el, evType, fn, useCapture) {
    if (el.addEventListener) {
        el.addEventListener(evType, fn, useCapture);
        return true;
    }
    else if (el.attachEvent) {
        var r = el.attachEvent('on' + evType, fn);
        return r;
    }
    else {
        el['on' + evType] = fn;
    }
}
0 голосов
/ 08 июня 2009

Я думаю, что это случай неправильной разметки, которая работает в определенных браузерах. Как таковой, он должен рассматриваться как часть кода, нуждающаяся в рефакторинге.

Как отмечали выше Джош Стодола и Дэвид Дорвард, элемент не может иметь несколько экземпляров одного и того же атрибута, и валидатор W3C также укажет на это.

Тем не менее, некоторые браузеры довольно просты и позволяют работать независимо от проверки; другие же не будут, и у пользователей этих браузеров будут проблемы. По сути, вы окажетесь в странных крайних случаях и неподдерживаемом поведении: трудно гарантировать, в каких браузерах он работает (я попробовал фрагмент, подобный вашему, в Firefox 3, и он потерпел неудачу), в отличие от спецификации; и, поскольку это не соответствует спецификации, нет гарантии, в каком порядке будут запускаться ваши События, поэтому вы не можете реально гарантировать порядок их запуска, если это важно.

Похоже, что немного по порядку.

0 голосов
/ 08 июня 2009

Валидатор сообщит вам, действителен ли он. Я скажу вам, что лучше практиковать поведенческое разделение .

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