使用带有Zepto未定义的引导程序不是一个功能

时间:2013-04-23 04:07:32

标签: javascript jquery twitter-bootstrap zepto

在html中使用jade

link(rel="stylesheet",href="/stylesheets/index/index.css")
script(src="/javascripts/assets/jquery_loader.js")
script(src="/javascripts/assets/bootstrap/bootstrap.js")

如果IE是浏览器,我使用modernizr加载zepto或jquery

Modernizr.load(
{
    test: /(msie) ([\w.]+)/.test(navigator.userAgent),
    yep: '/javascripts/assets/jquery/jquery-1.9.1.min.js',
    nope: '/javascripts/assets/zepto/zepto.min.js',
    complete:function()
    {
        if(!window.jQuery)
        {
            Zepto.browser = {webkit: true}
            window.jQuery = Zepto
        }
    }
});

我收到此错误

Uncaught TypeError: undefined is not a function 
(anonymous function) bootstrap.js:60

在线:60

}(window.jQuery);

我尝试使用modernizr

加载bootstrap
Modernizr.load(
{
    test: /(msie) ([\w.]+)/.test(navigator.userAgent),
    yep: ['/javascripts/assets/jquery/jquery-1.9.1.min.js','/javascripts/assets/bootstrap/bootstrap.js'],
    nope: ['/javascripts/assets/zepto/zepto.min.js','/javascripts/assets/bootstrap/bootstrap.js'],
    complete:function()
    {
        if(!window.jQuery)
        {
            Zepto.browser = {webkit: true}
            window.jQuery = Zepto
        }
    }
});

并且错误消失,但bootstrap不起作用 所以我在控制台测试

typeof $().modal == 'function'

,结果为'false',这意味着bootstrap不从服务器下载

我怎么能解决这个问题? TNX

1 个答案:

答案 0 :(得分:4)

我使用这个脚本来解决问题,tnx all!

Modernizr.load(
{
    test: /MSIE ([0-9]{1,}[\.0-9]{0,})/.test(navigator.userAgent),
    yep: '/javascripts/assets/jquery/jquery-1.9.1.min.js',
    nope: '/javascripts/assets/zepto/zepto.min.js',
    complete:function()
    {
        if(!window.jQuery)
        {
            Zepto.browser = {webkit: true}
            window.jQuery = Zepto
            console.log('Zepto')
        }
        Modernizr.load(
        {
            load:'/javascripts/assets/bootstrap/bootstrap.js',
            complete:function()
            {
                console.log('Loaded!')
            },
        })
    },
});