ocLazyLoad icon indicating copy to clipboard operation
ocLazyLoad copied to clipboard

Added scriptType and defaultScriptType

Open Gigitsu opened this issue 8 years ago • 4 comments

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'
      }]);
    }]
  }
})

Gigitsu avatar Mar 16 '16 14:03 Gigitsu

why we need specify version here?

sukrosono avatar Mar 17 '16 02:03 sukrosono

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

Gigitsu avatar Mar 17 '16 08:03 Gigitsu

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?

kination avatar Sep 15 '16 07:09 kination

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

racabe avatar Dec 18 '17 12:12 racabe