Как определить поддержку браузером pageShow и pageHide?

Как мы можем выполнить обнаружение объектов JavaScript для обработчиков pageShow и pageHide?

if( /* pagehide is supported */ ){
   window.addEventListener('pagehide', exitFunction, false);
}
else{
    window.addEventListener('unload', exitFunction, false);
}

person epascarello    schedule 02.08.2011    source источник


Ответы (1)


person    schedule
comment
Я только что проверил. Ответ работает, но имеет недостаток. Если кто-то определит onpagehide до того, как произойдет эта проверка, window.onpagehide будет истинным. Я не уверен, есть ли способ избежать этого. :( - person epascarello; 02.08.2011
comment
@epascarello Это возможно практически с чем угодно. Вы можете переопределить getElementById с помощью document.getElementById = "nyan cat"; - person Shaz; 02.08.2011
comment
большинство браузеров не позволят вам установить getElementById. Тот защищен. :) - person epascarello; 02.08.2011
comment
Этот ответ сработал для меня в chrome, но не в firefox, хотя оба поддерживают pageshow (я пробовал с pageshow), firefox всегда не проходит условную проверку. - person Frug; 15.12.2011
comment
@Shaz Рекомендуемый способ проверить, поддерживается ли событие, — использовать if ('onpagehide' in window) {. (См. perfectionkills.com/). сломанные браузеры. Расширение комментария @nilfalse.) - person robocat; 12.03.2015