我正在尝试将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。Googling并没有真正提出任何解决方案。
尽管如此,我还是尝试按照该页面上的建议添加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>
通常,您需要为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">