我的网站中有以下场景,页面(开场白)可以打开“设置”页面,您可以在其中更改设置,保存并关闭以便在开启页面中继续。
问题是,现在设置不会从设置页面传递到开启者页面。
所以我在saveSettings函数中添加了这个:
saveSettings: function () {
var jsonObj = ko.mapping.toJSON(this.ViewModel);
SD.CORP.WS.HedgingEffectivenessSettingsService.SetHedgingEffectivenessSettings(userID, companyID, selectedProductID, jsonObj, saveSettingsOnSucc, saveSettingsOnFaild);
这是我添加的一个例子:
var settings = JSON.parse(jsonObj);
window.opener.requestParameters.ReportSetting.ProspectiveTestSettings = settings.ProspectiveTestSettings;
}
但是当我尝试在开启者上使用它时这些对象是空的,如果我尝试JSON.stringify对象,我得到一个“界面未知”错误。
我该如何解决这个问题?
修改
我同时发现实际问题是我从设置窗口向开启窗口分配了一个对象,所以当我关闭设置窗口时,该对象不再存在。
我通过在开启者脚本上添加一个函数来修复它,以便我可以从设置页面调用它,然后使用$ .extend在开启者页面上创建一个深层副本。
答案 0 :(得分:1)
您可以尝试使用window.postMessage将设置从设置窗口发送到开启者。关于如何使用的文章:https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage
开瓶器:
window.addEventListner('message', function(event) {
var settings = JSON.parse(event.data)
}, false);
设置窗口:
window.postMessage(JSON.stringify(jsonObj));