在IE8中包含ECMA 5脚本

时间:2016-09-08 05:48:31

标签: javascript internet-explorer-8 ecmascript-5 transpiler

目前,我在我的代码中使用hls.js来播放hls流。原始代码用ECMA版本6编写,然后转换为ECMA 5并放在dist文件夹中(上面的链接)。它在其他地方完美运作。

我不打算使用任何来自库中的函数。我只想包括它。在IE8上渲染它会产生语法错误。

是否可以将js文件转换为与IE8兼容的版本,或者我应该找到一种不包含该文件的方法?

修改

关注this我尝试了以下操作:

<html>
<h1> IE test new </h1>

<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-shim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es5-shim/4.5.7/es5-sham.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.34.2/es6-shim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.34.2/es6-sham.min.js"></script>
<script src="https://wzrd.in/standalone/es7-shim@latest"></script>

<script src="https://cdn.jsdelivr.net/hls.js/latest/hls.js"></script>

</html>

但是,它仍会在IE8上出现以下错误:

Expected identifier hls.js, line 320 character 31

编辑2

我使用以下.babelrc文件将其转发到es3文件并修复其他一些错误。

{
  "presets": ["es3"],
  "plugins": ["transform-es3-property-literals", "transform-es3-member-expression-literals"]
}

但是,现在我在IE8上面临以下错误。

  Object doesn't support this property or method  hls.js, line 1063 character 17

具体错误在Object.defineProperty行。似乎IE 8不支持defineProperty方法。有没有办法解决这个问题。?

1 个答案:

答案 0 :(得分:0)

看起来旧IE在名称为default的属性中存在问题,并在对象上使用时将其视为保留字。因此,要解决此问题,您需要使用hls打开故障单并要求他们将其更改为不同的内容或使用引用exp['default']

http://jonathonhill.net/2009-11-24/javascript-reserved-words-trigger-expected-identifier-error-on-ie/

但他们确实说了。

  

兼容性

     

hls.js与支持MSE的浏览器兼容&#39;视频/ MP4&#39;   投入。截至今天,它得到了支持:

     

Chrome for Android

     

34+ Chrome for Desktop

     

34+ Firefox for Android 41 +

     

Firefox for Desktop 42 +

     

IE11 + for Windows 8.1

     

Safari for Mac 8+(测试版)

我不知道是否有任何转换器可以将其转换为对旧IE而言不是问题的东西。但也许。

Babel 6.0.20 Modules feature not work in IE8