无法使文本插件在IE中使用requirejs

Cannot get the text plugin to work with requirejs in IE

本文关键字:IE requirejs 插件 文本      更新时间:2023-09-26

我只是无法使文本插件在Internet Explorer上使用requirejs

我得到以下错误:

SCRIPT5: Access is denied.
text.js, line 267 character 13

几秒钟后,我得到以下错误:

SCRIPT5022: Load timeout for modules: underscore,backbone,text!templates/userListTemplate.html_unnormalized2,text!templates/editUserTemplate.html_unnormalized3,text!templates/userListTemplate.html
http://requirejs.org/docs/errors.html#timeout 
require.js, line 8 character 105

我在本地加载文件,脚本可以在Firefox和chrome中运行。

这是我的配置:

// file: main.js
    require.config({
        paths: {
            "jquery" : "libs/jquery",
            "underscore" : "libs/underscore",
            "backbone" : "libs/backbone",
            "text" : "libs/text"
        },
        shim: {
            underscore: {
                exports: '_'
            },
            backbone: {
                deps: ["underscore", "jquery"],
                exports: "Backbone"
            },
            text : {
                exports : 'text'
            }
        }
    });
    require(['app'], function (App) {
        App.initialize();
    });

以下是app.js:的内容

 // file: js/app.js
define([
'jquery', 
'underscore', 
'backbone',
'router',
'models/user',
'collections/users'
], function ($, _, Backbone, Router, User, Users) {
var initialize = function () {
    // Models to populate the global collection with default values.
    var user1 = new User({
        firstName : 'Sassy',
        lastName : 'The fancy Pussycat'
    });
    var user2 = new User({
        firstName : 'Lola',
        lastName : 'The lovable Saint Bernard'
    });
    var user3 = new User({
        firstName : 'Dany',
        lastName : 'The guy'
    });
    var user4 = new User({
        firstName : 'Aly',
        lastName : 'The cute wife'
    });
    var user5 = new User({
        firstName : 'Last',
        lastName : 'Hoping to be the first'
    });
    // Global collection.
    window.users = new Users([user1, user2, user3, user4, user5]);
    Router.initialize();
}
return {
    initialize : initialize
}
});

接下来,我加载router.js:

// file: router.js
    define([
        'jquery', 
        'underscore', 
        'backbone',
        'views/userList',
        'views/editUser'
    ], function ($, _, Backbone, UserList, EditUser) {
        var Router = Backbone.Router.extend({
            routes: {
                '' : 'home',
                'new' : 'editUser'
            }
        });
        var initialize = function () {
            var router = new Router();
            router.on('route:home', function () {
                var userList = new UserList();
                userList.render();
            });
            router.on('route:editUser', function () {
                var editUser = new EditUser();
                editUser.render();
            });
            Backbone.history.start();
        }
        return { 
            initialize : initialize 
        }
    });

最后,这里是我的一个观点:

// file: views/userList.js
    define([
        'jquery', 
        'underscore', 
        'backbone',
        'text!templates/userListTemplate.html'
    ], function ($, _, Backbone, userListTemplate) {
        var UserList = Backbone.View.extend({
            el : '.page',
            preLoader : '.preLoader',
            render : function (currentPage) {
                var that = this, 
                    models = users.models,
                    perPage = 2,
                    totalPages = Math.ceil(models.length / perPage);
                if (currentPage == null || currentPage.length === 0) {
                    currentPage = 0;
                }
                var start = currentPage * perPage,
                    end = start + perPage;
                var subset = _.filter(models, function (num, index) {
                    return (index >= start) && (index < end);
                });
                var template = _.template(userListTemplate, {
                    users : subset, 
                    totalPages : totalPages, 
                    currentPage : currentPage
                });
                setTimeout(function () {
                    that.$el.append(template);
                    $(that.preLoader).hide();
                    that.$el.show('slow');
                }, 500);
            }, 
            events : {
                'click .pagination a' : 'click'
            },
            click : function (e) {
                var currentPage = $(e.target).html() - 1;
                this.render(currentPage);
            }
        });
        return UserList;
    });

我做错了什么?

当你试图在Internet Explorer上运行本地脚本时,它往往会变得非常粗略。也就是说,它看起来没有任何问题,当/如果你把所有东西都转移到服务器上,问题应该会自行解决。在此之前,请尝试将其添加到源html:的顶部

<!-- saved from url=(0014)about:internet -->

也可以在网上浏览一下,了解如何让IE接受你的本地脚本,比如这篇文章。