ocombe / ocLazyLoad

Lazy load modules & components in AngularJS
https://oclazyload.readme.io
MIT License
2.63k stars 510 forks source link

Added scriptType and defaultScriptType #296

Open Gigitsu opened 8 years ago

Gigitsu commented 8 years ago

By default, ocLazyLoad doesn't add type attribute to script element. This led to an error when loading js file with 'yield' using FireFox, specifically the error is 'SyntaxError: yield is a reserved identifier'.

To let FireFox correctly recognize the js file, I need to put type type="application/javascript;version=1.8" in script element.

Now you can set the default script type attribute by configuration with

angular.module('app', ['oc.lazyLoad']).config(['$ocLazyLoadProvider', function($ocLazyLoadProvider) {
  $ocLazyLoadProvider.config({
    defaultScriptType: 'application/javascript;version=1.8'
  });
}]);

or directly with your router

$routerProvider.when('/MyCtrl', {
  templateUrl: 'views/MyView.html',
  controller: 'MyCtrl',
  resolve: {
    lazy: ['$ocLazyLoad', function ($ocLazyLoad) {
      return $ocLazyLoad.load([{
        name: 'MyCtrl',
        files: ['scripts/controllers/MyCtrl.js'],
        scriptType: 'application/javascript;version=1.8'
      }]);
    }]
  }
})
sukrosono commented 8 years ago

why we need specify version here?

Gigitsu commented 8 years ago

Because, otherwise, loading js files that uses 'yield' or 'let' keywords with FireFox leads to an error.

kination commented 8 years ago

Hello @Gigitsu, I couldn't find such error on FireFox though I used 'let' or 'yield' on example codes. Could you suggest simple example, or let me know your browser version?

racabe commented 6 years ago

Hi, do you know when will be merge this change with the master branch? I need this change like minimum because some security auditories said that my code need to say the type "text/javascript" to javascript files. This is important for our team to pass the auditory completly.

Thanks