考虑以下场景:
FooPage 是在单击“添加”时打开 BarPage 的页面。
BarPage 有一个“返回”按钮。单击它后,它会执行以下操作:
function Add() {
var selectedResources = [{
"ResourceID": "10",
"ResourceName": "Foo",
"ResourceTypeName": "Bar"
}];
if (window.opener != null
&& typeof window.opener.AddResources != "undefined") {
window.opener.AddResources(selectedResources);
window.close();
}
}
如您所见,FooPage 有一个名为AddResources
. 它执行以下操作:
function AddResourcesCallback(selectedResources) {
var result = JSON.stringify(selectedResources);
}
在 Chrome 中,这很好用——字符串是从 JSON 中创建的JSON.stringify
,每个人都很高兴。
但是,在 IE8 中,这不起作用。JSON 不会被创建为字符串 - 而是JSON.stringify
返回undefined
.
我尝试将场景更改为此,作为测试:
function AddResourcesCallback(selectedResources) {
var selectedResources = [{
"ResourceID": "10",
"ResourceName": "Foo",
"ResourceTypeName": "Bar"
}];
var result = JSON.stringify(selectedResources);
}
在这种情况下,JSON.stringify
在 IE8 中返回正确的值,就像 Chrome 一样。这意味着,在 IE8 中,当在页面之间传递数组时,您无法将数组解析为 JSON。
有没有办法在不先对它进行字符串化的情况下传递数组?