【问题标题】:React JS not working with Internet Explorer 9React JS 不适用于 Internet Explorer 9
【发布时间】:2015-07-01 22:34:29
【问题描述】:

我正在尝试将 React 与 Internet Explorer 9 一起使用,但即使尝试运行非常简单的东西也会出现以下错误:

SCRIPT438:对象不支持属性或方法“isArray” react-with-addons.js,第 4 行字符 317

SCRIPT438:对象不支持“创建”属性或方法 JSXTransformer.js,第 4 行字符 326

我读过https://facebook.github.io/react/docs/working-with-the-browser.html,上面说IE8 可能有这些问题,但没有提到IE9。谷歌搜索也没有真正提出任何解决方案。

不过,我尝试按照该页面上的建议添加 es5-shim/sham。这会导致不同的错误:

SCRIPT438:对象不支持属性或方法“hasAttribute” es5-shim.min.js,第 6 行字符 4143

以前有没有人在 IE9 或其他环境中遇到过这些错误?

感谢您的帮助!

我要运行的完整代码是:

<html>

<head>
  <script src="js/es5-shim.min.js"></script>
  <script src="js/es5-sham.min.js"></script>
  <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
  <script src="js/react-with-addons.js"></script>
  <script src="js/JSXTransformer.js"></script>

</head>

<body>
  <div id="container"></div>
  <script type="text/jsx">
    React.render(
    <h1>HELLO WORLD!</h1>
    );
  </script>
</body>

</html>

【问题讨论】:

  • 我不认为 JSXTransformer 可以在常青浏览器之外工作。它旨在用于演示/早期开发。
  • @FakeRainBrigand 是对的。要获得旧版浏览器支持,您必须捆绑 (browserify/webpack) 以及“envify”和 uglify 捆绑包。它将删除仅用于开发的代码。

标签: javascript internet-explorer-9 reactjs


【解决方案1】:

通常,您需要为 ES5 功能包含指定的 polyfill(如您所见):https://facebook.github.io/react/docs/react-dom.html#browser-support

除了您提供的 polyfill 之外,您可能还需要 HTML5 Shiv。

不过,更具体地说,问题可能不在于 polyfill,而在于运行 IE9 的文档模式。您需要确保在 HTML 文件中设置正确的文档模式,以便 IE 知道要定位哪个版本。否则,即使您使用的是 IE9,它也可能针对 IE7,这是不好的。

<meta http-equiv="X-UA-Compatible" content="IE=edge">

【讨论】:

    【解决方案2】:

    在 index.js 文件中你必须添加 polyfill。这些导入应该在您的第一个导入中。

    import 'react-app-polyfill/ie9';
    import 'react-app-polyfill/ie11';   
    //other imports
    

    现在在你的网站上打开它就可以了。

    在导入之前,您必须安装 react-app-polyfill。

     //To install use below command:
    
     npm install react-app-polyfill
    

    链接参考: https://www.npmjs.com/package/react-app-polyfill

    【讨论】:

    • 开发服务器不支持 IE9/11 是一个已知限制。添加 import 'react-app-polyfill/ie9' 后; & import 'react-app-polyfill/ie11';,尝试构建项目并提供相同的服务。它会起作用的。如果您使用的是 yarn,请尝试以下 2 个命令来为您的应用程序构建提供服务 - yarn global add serve -s build
    • @PrijeshMeppayil 即使为我构建也无法正常工作
    猜你喜欢
    • 2013-07-05
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多