Обновленный ответ :
Да , вы можете определить это. Создайте элемент, прослушайте событие и измените атрибут элемента. В моих тестах вам даже не нужно было добавлять элемент в дерево DOM, что делает это отличным обнаружением отдельных функций.
Пример:
function isDOMAttrModifiedSupported() {
var p, flag;
flag = false;
p = document.createElement('p');
if (p.addEventListener) {
p.addEventListener('DOMAttrModified', callback, false);
}
else if (p.attachEvent) {
p.attachEvent('onDOMAttrModified', callback);
}
else {
// Assume not
return false;
}
p.setAttribute('id', 'target');
return flag;
function callback() {
flag = true;
}
}
Живая копия
Firefox запускает обратный вызов для всех вышеуказанных модификаций; Хром ни на одном из них.
Оригинальный ответ :
Вы можете определить, поддерживаются ли некоторые события, как показано на этой удобной странице . Я не знаю, можете ли вы протестировать этот тест специально, но если вы можете, этот код вполне может помочь вам начать.
Обновление : я сбросил код Kangax в JSBin и попробовал его, не похоже, что этот метод сниффинга работает для этого события (если только у меня не написано имя или что-то другое; Firefox показывает «ложь»). Но моя техника выше делает.