对象不支持此属性或方法EmberJs IE 8问题

时间:2014-09-10 07:53:41

标签: javascript ember.js internet-explorer-8 polyfills ie-compatibility-mode

我在IE 8页面上收到以下错误(该页面在其他浏览器中正常运行)。

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; InfoPath.3)
Timestamp: Wed, 10 Sep 2014 06:48:45 UTC

Message: Object doesn't support this property or method
Line: 70532
Char: 5
Code: 0

当我检查上述文件中的第70532行时,我看到了这段代码:

if (!Object.create && !Object.create(null).hasOwnProperty) {
      throw new Error("This browser does not support Object.create(null), please polyfil with es5-sham: http://git.io/yBU2rg");
    }

请使用es5-sham的polyfil是什么意思

 Please polyfil with es5-sham: http://git.io/yBU2rg

enter image description here

如何修复此错误。

2 个答案:

答案 0 :(得分:4)

IE8中不支持

Object.create,因此您的框架要求您使用" polyfil"它,这意味着你需要实现原本应该支持的东西,但由于某种原因,这个特定的环境并不知道它。

这意味着,如果您想使用Object.create,您必须自己实施。幸运的是,你不必做太多,网址(https://github.com/es-shims/es5-shim/blob/master/es5-sham.js)指向包含必要的polyfill的文件。 只需在框架脚本执行之前运行该脚本。

更新:
这行似乎不对我说:!Object.create && !Object.create(null).hasOwnProperty。如果Object.create不存在,请将其称为{{1}应该抛出一个错误,但我认为它应该是' undefined不是一个函数'。

答案 1 :(得分:1)

我找到了另一个在我的场景中工作的polyfil。我在link找到了答案。

我正在添加链接

的代码表单
if (!Object.create) {
    Object.create = function(proto, props) {
        if (typeof props !== "undefined") {
            throw "The multiple-argument version of Object.create is not provided by this browser and cannot be shimmed.";
        }
        function ctor() { }
        ctor.prototype = proto;
        return new ctor();
    };
}

添加此代码似乎对我来说很有用。只有我做的改变是,我评论了抛出异常的代码,因为它导致了另一个错误。