IE8中的exportMetadata错误

时间:2013-06-12 18:09:12

标签: javascript internet-explorer-8 breeze dep

我在proto.exportMetadata函数中运行IE8的机器上遇到错误。 “错误:对方法或属性访问的意外调用”。我正在运行1.2.1版本,当遇到此错误时。如果需要,我会尝试提供更多信息。感谢。

编辑 我将版本更新到1.3.5,并且在运行IE8的计算机上遇到了数据执行保护(DEP)设置的新问题。该机器使用Windows XP Pro Service Pack 3设置并运行IE8。不幸的是,在使用IE8浏览器模式运行IE10时没有发生这种情况,这是在运行IE8的机器上发生的。

2 个答案:

答案 0 :(得分:1)

即使使用Breeze 1.3.6,我也会遇到同样的问题。在IE8中,exportMetadata导致“意外调用方法或属性访问”错误。

对我来说,问题是间歇性的,但仍然非常可重复。我可以重新加载我的应用程序,有时它工作正常,有时我得到JavaScript错误,有时IE选项卡完全崩溃与“Internet Explorer已停止工作”对话框。

错误实际上是从本机JSON.stringify函数内部引发的。解决方法是删除本机JSON对象并改为使用json2.js:

<head>
    <!--[if lt IE 9]>
        <script>
            // Remove IE8's native JSON object. It doesn't work with Breeze.
            JSON = undefined;
        </script>
        <script src="json2.js"></script>
    <![endif]-->
</head>

您可以在GitHub page上下载最新版本的json2.js Raw链接。

另外,如果您要使用json2.js,Breeze在调用JSON.stringify时会出现错误(v1.3.6中breeze.debug.js的第5494行)。 __config.stringifyPad应该是stringify的第三个参数,而不是第二个参数。您需要插入第二个参数null,以便填充变为第三个参数。我已经提交了pull request,所以希望这在Breeze 1.3.7中得到修复。

我不确定Breeze传递给JSON.stringify以使本机实现失效。最好能够深入了解它,但是现在我正在使用这种解决方法。

答案 1 :(得分:0)

编辑:在Breeze 1.3.6中修复了一些IE8特定问题。您可能也想尝试这一点。


如果您使用的是IE8,则需要使用这样的ES5垫片:ES5 Shim。这里有关于此主题的进一步文档:Breeze prerequisites