我在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
如何修复此错误。
答案 0 :(得分:4)
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();
};
}
添加此代码似乎对我来说很有用。只有我做的改变是,我评论了抛出异常的代码,因为它导致了另一个错误。