From c25834703a5633f00059b46a71a4440e819230eb Mon Sep 17 00:00:00 2001 From: Simon Eisenmann Date: Tue, 8 Jul 2014 12:22:53 +0200 Subject: [PATCH] Added general ES5 compatibility check and refuse to start when no Object.create support is found. --- static/js/main.js | 85 +++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/static/js/main.js b/static/js/main.js index f3c9b1a0..65e57016 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -157,50 +157,57 @@ require.onError = (function() { }; }()); -define([ - 'jquery', - 'underscore', - 'angular', - 'require', - 'base'], function($, _, angular, require) { +// Make sure the browser knows ES5. +if (Object.create) { - // Dynamic app loader with plugin support. - var load = ['app']; - _.each(document.getElementsByTagName('script'), function(script) { - var dataPlugin = script.getAttribute('data-plugin'); - if (dataPlugin) { - load.push(dataPlugin); - } - }); - require(load, function(App) { - var args = Array.prototype.slice.call(arguments, 1); - // Add Angular modules from plugins. - var modules = []; - _.each(args, function(plugin) { - if (plugin && plugin.module) { - plugin.module(modules); + define([ + 'jquery', + 'underscore', + 'angular', + 'require', + 'base'], function($, _, angular, require) { + + // Dynamic app loader with plugin support. + var load = ['app']; + _.each(document.getElementsByTagName('script'), function(script) { + var dataPlugin = script.getAttribute('data-plugin'); + if (dataPlugin) { + load.push(dataPlugin); } }); - // External plugin support. - var externalPlugin - if (window.externalPlugin) { - externalPlugin = window.externalPlugin($, _, angular); - if (externalPlugin && externalPlugin.module) { - externalPlugin.module(modules); + require(load, function(App) { + var args = Array.prototype.slice.call(arguments, 1); + // Add Angular modules from plugins. + var modules = []; + _.each(args, function(plugin) { + if (plugin && plugin.module) { + plugin.module(modules); + } + }); + // External plugin support. + var externalPlugin + if (window.externalPlugin) { + externalPlugin = window.externalPlugin($, _, angular); + if (externalPlugin && externalPlugin.module) { + externalPlugin.module(modules); + } } - } - // Init Angular app. - var app = App.initialize(modules); - // Init plugins. - _.each(args, function(plugin) { - if (plugin && plugin.initialize) { - plugin.initialize(app); + // Init Angular app. + var app = App.initialize(modules); + // Init plugins. + _.each(args, function(plugin) { + if (plugin && plugin.initialize) { + plugin.initialize(app); + } + }); + // Init external plugin. + if (externalPlugin && externalPlugin.initialize) { + externalPlugin.initialize(app); } }); - // Init external plugin. - if (externalPlugin && externalPlugin.initialize) { - externalPlugin.initialize(app); - } + }); -}); +} else { + alert("Your browser does not support this application. Please update your browser to the latest version."); +} \ No newline at end of file