首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >jQuery 1.9浏览器检测

jQuery 1.9浏览器检测
EN

Stack Overflow用户
提问于 2013-01-27 14:27:28
回答 1查看 42.8K关注 0票数 19

在早期版本中,我经常测试是否应该在页面加载时手动触发popstate,因为Chrome会在加载后立即触发它,而Firefox和IE不会。

代码语言:javascript
复制
if ($.browser.mozilla || $.browser.msie) {
    $(window).trigger('popstate');
}

既然他们在1.9中删除了browser对象,我应该如何测试这些浏览器呢?或者我如何计算我是否需要在页面加载时使用popstate

代码是:

代码语言:javascript
复制
$(function(){
    $(window).on('popstate', popState);

    // manual trigger loads template by URL in FF/IE.
    if ($.browser.mozilla || $.browser.msie) {
       $(window).trigger('popstate');
    }
});

更新

就是这样的:

代码语言:javascript
复制
    function popState(e){
        var initial = e.originalEvent === undefined || e.originalEvent.state === null;
        if(!initial){
            activateRoute({
                key: e.originalEvent.state.key,
                settings: e.originalEvent.state.settings
            },'replace');
        }
    }

    function init(){
        $(window).on('popstate', popState);

        $(function(){
            var route = getRoute(document.location.pathname);
            activateRoute(route, 'replace');
        });
    }
EN

回答 1

Stack Overflow用户

发布于 2013-05-15 20:01:00

Here是解决这个问题的一种快速方法。将这行代码添加到jQuery-1.9.js中,并用jQuery.browser替换$.browser

代码语言:javascript
复制
jQuery.browser = {};
jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit    /.test(navigator.userAgent.toLowerCase());
jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase());
jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase());
jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());

here

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14545023

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档