Для перевірки чи підтримується подія достатньо скористатися оператором in
if('onerror' in window)
alert('браузер підтримує подію onerror у window');
else
alert('браузер НЕ підтримує подію onerror у window');
Функція для перевірки чи підтримує вказаний об'єкт подію:
function isEventObject(obj, eventName){
eventName=eventName.toString().toLowerCase();
if(eventName.substr(0,2)!='on')
eventName='on'+eventName;
return (eventName in obj);
}
alert( isEventObject(window, 'onerror') );
Перевірка чи підтримує елемент подію за допомогою in не завжди дає вірний результат. Для більш вірного результату краще перевіряти додавши атрибут до елементу методом Element.setAttribute(). Якщо тип атрибуту є функція тоді елемент підтримує подію.
Функція яка перевіряє чи підтримує браузер вказану подію в елементах:
function isEventSupported(eventName){
var tag_name={ 'onselect':'input', 'onchange':'input', 'onsubmit':'form', 'onreset':'form', 'onerror':'img', 'onload':'img', 'onabort':'img'};
eventName=eventName.toString().toLowerCase();
if(eventName.substr(0,2)!='on')
eventName='on'+eventName;
var el = document.createElement(tag_name[eventName] || 'div');
var isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, 'return;');
isSupported = typeof el[eventName] == 'function';
}
return isSupported;
}
var res=isEventSupported('onload');
alert( res );
Функція яка перевіряє чи підтримує браузер вказану подію у вказаному елементі:
function isEventSupported(el, eventName){
eventName=eventName.toString().toLowerCase();
if(eventName.substr(0,2)!='on')
eventName='on'+eventName;
var isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, 'return;');
isSupported = typeof el[eventName] == 'function';
}
return isSupported;
}
var res=isEventSupported(document.body, 'onload');
alert( res );