IE8 で次のエラーが返されます。
Message: Object expected Line: 27 Char: 1 Code: 0 URI: http://cdn.example.com/images/example4/js/libs/jquery.backgroundSize.js
Message: '$.fn' is null or not an object Line: 8 Char: 1 Code: 0 URI: http://cdn.example.com/images/example4/js/libs/jquery.waitUntilExists.js
Message: 'fn' is null or not an object Line: 62 Char: 73 Code: 0 URI: http://cdn.example.com/images/example4/js/libs/jquery.nicescroll.js
Message: Object expected Line: 34 Char: 231 Code: 0 URI: http://cdn.example.com/images/example4/js/libs/backbone.js
Message: 'Vent' is null or not an object Line: 19 Char: 3 Code: 0 URI: http://cdn.example.com/images/example4/js/models/auth.js
私たちのサイトは、依存関係管理のために Backbone.js と Require.js で構築された SPA です。この問題は、IE8 (および場合によってはそれ以前のバージョン) でのみ発生します。これらの各ファイルは、'Vent' が Backbone.Event を拡張するために発生する最後のものを除いて、すべて Require.js 構成ファイルで Backbone.js のシムとして作成されます。
Require.js 構成:
requirejs.config({
baseUrl: 'http://cdn.staging.example.com/images/example4/js',
paths: {
underscore: './libs/underscore',
jquery: './libs/jquery',
backbone: './libs/backbone',
example: './libs/example',
blockui: './libs/jquery.blockUI',
backgroundsize: './libs/jquery.backgroundSize',
nicescroll: './libs/jquery.nicescroll',
waituntilexists: './libs/jquery.waitUntilExists',
swfobject: './libs/swfobject',
spinner: './libs/jquery.spinner'
},
//Create shims for Backbone
shim: {
'backgroundsize': {
deps: [ 'jquery'],
exports: 'backgroundsize'
},
'nicescroll': {
deps: ['jquery'],
exports: 'nicescroll'
},
'waituntilexists': {
deps: ['jquery'],
exports: 'waituntilexists'
},
'spinner': {
deps: ['jquery'],
exports: 'spinner'
},
'backbone': {
deps: [ 'underscore', 'jquery','blockui','backgroundsize','nicescroll', 'waituntilexists', 'swfobject', 'spinner'],
exports: 'Backbone'
}
}
});
requirejs(['app'],
function(App){
App.initialize();
});
これを引き起こしている可能性のある提案は、Backbone.js 0.9.2 と Require.js 2.0.6 を使用しています。