我有一个弹出窗口,它将从网格中搜索项目。当直接选择行时,它将值返回到父页面。但是,如果我通过按钮单击并选择一行搜索网格,则父页面将接收未定义的对象,尽管从弹出窗口返回正确的值。父页面如何收到正确的值?
答案 0 :(得分:0)
OP在对该问题的评论中确实提到了这一点,但为了说清楚:这个答案是用户ConnorsFan的this one副本。如果答案已更新,则可能会出现任何更新。
为了在我的页面中继续使用showModalDialog,我不得不为bug提出自己的解决方法。所以,这是......
在谷歌浏览器中,回发后,showModalDialog始终返回undefined。但是,即使在回发之后,模态对话框中的window.opener属性也指向调用者窗口。所以,我考虑将对话框的结果放在该调用者窗口的returnValue属性中。它有效。
在来电者窗口中:
var prevReturnValue = window.returnValue; // Save the current returnValue
window.returnValue = undefined;
var dlgReturnValue = window.showModalDialog(...);
if (dlgReturnValue == undefined) // We don't know here if undefined is the real result...
{
// So we take no chance, in case this is the Google Chrome bug
dlgReturnValue = window.returnValue;
}
window.returnValue = prevReturnValue; // Restore the original returnValue
此时,使用dlgReturnValue进行进一步处理 在模态对话框窗口中:
if (window.opener)
{
window.opener.returnValue = dateValue;
}
window.returnValue = dateValue;
self.close();