0

我有一个弹出窗口,它将从网格中搜索项目。当直接选择一行时,它将值返回给父页面。但是,如果我通过按钮单击搜索网格并选择一行,则父页面会收到未定义的对象,尽管从弹出窗口中返回了正确的值。父页面如何接收正确的值?

4

1 回答 1

0

OP 在对该问题的评论中确实提到了这一点,但要明确一点:这个答案是用户 ConnorsFan 的副本。如果答案已更新,则可能会出现任何更新。


为了继续在我的页面中使用 showModalDialog,我必须想出我自己的解决方法来解决这个错误。所以,这里...

在 Google Chrome 中,回发后,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();
于 2013-02-19T10:12:04.067 回答