1

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

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

4

2 回答 2

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 页面上的 Raw 链接下载最新版本的 json2.js 。

此外,如果您要使用 json2.js,Breeze 在其对 JSON.stringify 的调用中有一个错误(v1.3.6 中的轻率.debug.js 的第 5494 行)。__config.stringifyPad应该是 stringify 的第三个参数,而不是第二个。您需要插入第二个参数null,以便 pad 成为第三个参数。我已经提交了一个拉取请求,所以希望这在 Breeze 1.3.7 中得到修复。

我不确定 Breeze 将什么传递给 JSON.stringify 以使本机实现失败。深入了解它会很好,但现在我正在使用这个解决方法。

于 2013-06-27T12:07:53.543 回答
0

编辑:Breeze 1.3.6 中修复了一些 IE8 特定问题。你可能也想试试这个。


如果您使用的是 IE8,您将需要像这样使用 ES5 垫片:ES5 Shim。此处有关于此主题的更多文档:Breeze 先决条件

于 2013-06-12T18:29:52.483 回答