次のシナリオを検討してください。
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に解析することはできません。
最初に配列を文字列化せずに配列を渡す方法はありますか?