Для хрома событие срабатывает при загрузке страницы, но в firefox оно срабатывает правильно, только когда вы нажимаете кнопку назад или вперед. Итак, как написать скрипт, который отлично работает для всех браузеров?Каков идеальный способ обработки window.onpopstate для всех браузеров?
ответ
Я бы выбрал обнаружение браузера на этом (фактически, я сделал). Я использую .data Jquery (в), чтобы установить логический флаг для проверки против:
// chrome fires a popstack event on page load, so do a check before proceeding
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
if(is_chrome && !$('body').data('allow-popstate-action')) {
$('body').data('allow-popstate-action', true);
return false;
}
Я добавил это условное положение в функции, которая связана с popstate события, поэтому первый раз это называется в Chrome (который находится на странице), он просто выходит из функции, ничего не делая. В следующий раз (предыдущие/обратные кнопки) он будет работать нормально.
Я застрял со старой версией jQuery в этом проекте, поэтому я не мог использовать jQuery.browser.webkit, но вы, вероятно, сможете.
Несколько более элегантный способ заключается в том, чтобы добавить тайм-аут 1 мс, прежде чем добавлять слушателя всплывающего окна. Поскольку начальный popstate будет срабатывать до того, как будет запущен любой асинхронный код, функция popstate будет работать правильно (только при действиях в прямом/обратном направлении):
window.setTimeout(function(){
$(window).on('popstate', function(event){
// do things
});
}, 1);
- 1. Каков идеальный способ обработки запроса службы RESTful без идентификации ресурса
- 2. Каков наилучший способ использования @ font-face для всех браузеров?
- 3. AngularJS: Идеальный способ обработки HTML-шаблонов?
- 4. Каков идеальный способ написать «return» в методе
- 5. Каков идеальный шрифт для OCR?
- 6. Object.watch() для всех браузеров?
- 7. Каков идеальный способ в iPhone SDK для обработки данных, поступающих из веб-службы?
- 8. window.href для всех браузеров
- 9. идеальный способ очистки коллекций
- 10. Каков практический способ поддержки нескольких типов браузеров?
- 11. Каков наилучший способ обработки всех ошибок в приложении Node.js + Express?
- 12. Css-маскирование для всех браузеров?
- 13. Каков правильный способ обработки FB.Event.subscribe?
- 14. Каков наилучший способ обработки ВСЕХ ошибок jQuery ajax сразу?
- 15. Каков правильный способ обработки напоминаний?
- 16. Каков правильный способ обработки прерываний?
- 17. Каков угловой способ обработки перерисовки?
- 18. Каков правильный способ обработки ошибок?
- 19. window.onpopstate для android?
- 20. Каков идеальный уровень звука для Sphinx?
- 21. Каков идеальный размер для FileSystemWatcher InternalBufferSize?
- 22. Идеальный способ обработки нескольких возвращаемых значений в методах в java
- 23. полупрозрачные изображения для всех браузеров?
- 24. windows.open совместим для всех браузеров?
- 25. Datalist Совместимость для всех браузеров
- 26. Как отредактировать для всех браузеров?
- 27. файла стиль для всех браузеров
- 28. Javascript window.close() для всех браузеров?
- 29. Событие OnResize для всех браузеров?
- 30. Каков наилучший способ обработки (вложенных) наборов записей?