即使使用 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 以使本机实现失败。深入了解它会很好,但现在我正在使用这个解决方法。