5

我正在尝试将 window.opener.returnValue 与 showModalDialog 一起使用。有许多关于可用于解决 window.returnValue 不起作用的技术的参考。然而,它似乎在 Chrome 的 23.0.1271.97 版本中不起作用。

如果我如下注释掉 self.close 行,并在设置返回值之前和之后放入警报,则两个警报都显示为“未定义”:

调用者 a1.html

<html>
<head>
    <base target="_self"/>
 <script>
  function fu()
  {
    window.returnValue = undefined;
    var result = window.showModalDialog("b1.html", window, "dialogHeight:650px; dialogWidth:900px;");
    if (result == undefined)
        result = window.returnValue;

    if (result != null && result != "undefined")
        text.value = result;
  }

 </script>
</head>
<body>
 <input type=button value="click me" onclick="return fu();">
 <input type=text id=text>
</body>
</html>

被称为b1.html:

<html>
<head>
<base target="_self"/>
<script>

  function fu()
  {
   var text = document.getElementById("text");
  if (window.opener)
  {
    alert(window.opener.returnValue);
    window.opener.returnValue = "your return value";
    alert(window.opener.returnValue);
  }
  text.value = window.opener.returnValue;
  //self.close();
  }


 </script>
</head>
<body>
 <input type=button value="close" onclick="return fu();">
 <input type=text id=text>
</body>
</html>
4

1 回答 1

0

此外 window.returnValue 仅在“模态对话框窗口”和“父窗口(打开对话框)”都托管在同一服务器中时才有效。如果不是,它将仅返回未定义。

于 2013-09-12T15:41:40.087 回答