【问题标题】:require.js 'Backbone' is undefined IE onlyrequire.js 'Backbone' 仅是未定义的 IE
【发布时间】:2012-09-25 15:07:21
【问题描述】:

网站在除 IE 之外的所有浏览器中都能完美运行: SCRIPT5009:“主干”未定义

这里是 main.js,它已经花费了很多小时,并且似乎符合所有 API 要求?

requirejs.config({
    paths: {
    //  "jquery" : "jquery-1.7.2.min",
        "jquery.json" : "jquery.json-2.3.min",
        "jquery.jtemplates" : "jquery-jtemplates",
        "jquery.nailthumb" : "jquery.nailthumb.1.1.min",
        "jquery.ui" : "jquery-ui-1.8.21.custom.min",
        "jquery.fileupload" : "jquery-fileupload/jquery.fileupload",
        "jquery.iframe-transport" : "jquery-fileupload/jquery.iframe-transport",
        "jquery.ui.widget" : "jquery-fileupload/vendor/jquery.ui.widget",
        "jquery.fancybox" : "jquery.fancybox",
        "handlebars" : "handlebars",
        "input" : "input",
        "validator" : "cars/modules/carsValidator",
        "backbone" : "backbone",
        "underscore": "underscore"

    },
    shim: {
        'jquery.jtemplates': {
            deps: ['jquery']
        },
            //exports: "jQuery.fn.setTemplate"
        //},
        'jquery.json': {
            deps: ['jquery'],
            exports: "JSON"
        },
        'jquery.nailthumb':{
            deps: ['jquery']
        },
        'jquery.iframe-transport':{
            deps: ['jquery']
        },
       'jquery.fancybox':{
            deps: ['jquery']
        },
        'input': {
            deps: ['jquery']
        },
        'backbone': {
            deps: ['jquery', 'underscore'],
            exports: "Backbone"
        },
        'underscore' :{
            exports: '_'
        }

    } 
});
requirejs(["jquery"], function($) {
    window.$ = $;
    if (typeof console == "undefined") {
        this.console = {log: function() {}};
    }
    //this will invoke the script for the page
    if (module){
        require([module], function(module){});
    }


});

还有我的定义电话:

define(["jquery", "backbone"], function ($, backbone) {
    return backbone.Model.extend({
        update: function (message) {
            return this.type(message.type).message(message.message);
        },

        type: function (type) {
            if (type) {
                this.set({type: type});
                return this;
            }
            return this.get("type");

        },

        message: function (message) {
            if (message) {
                this.set({message: message});
                return this;
            }
            return this.get("message");
        }
    });
});

任何帮助都会很棒.... 谢谢

【问题讨论】:

  • 我遇到了类似的事情,无法弄清楚,直到我注意到通过使用 IE 模式切换来测试 IE9 和 IE8 等,导致应用程序崩溃。通过在每次切换后清除缓存和刷新,它神奇地在 IE9 和 IE8 模式下工作。由于我不希望最终用户进行此切换,因此我将其留在那里。

标签: internet-explorer backbone.js undefined require


【解决方案1】:

我知道这不是您期望的解决方案,但我在 IE10 上遇到了同样的错误。 问题是在较旧的 ie 版本(ie9、8、7、6)中它运行良好,所以我决定使用官方的 MS 'hack' - X-UA-Compatible

只需将以下行添加到您的 html 的 <head> 部分:

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" />

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多