window.showModalDialogで開いたウィンドウから親ウィンドウに値を渡すのはwindow.openerだとダメでしたね

最近のWeb2.0的なオシャレページではほとんど見かけなくなった「showModalDialog」君ですが、業務系ではまだまだ健在なようで、たまに触るとあれれって思ったりするんですな。

showModalDialogで開いたウィンドウから親画面の関数呼び出し&引数渡そうとしたんだけど、FireFoxはOKでIEはNGだった。
そういや、showModalDialogでは別の方法でパラメータを渡すんだったと検索しながら思い出したとですよ。

んで、やりたいことはshowModalDialogを使った場合の、親ウィンドウ→子ウィンドウ、子ウィンドウ→親ウィンドウにパラメータを渡すってなことで、以下サンプルですたい。

親ウィンドウ

<html>
<script language="Javascript">
<!--
function openChild() {
  var obj = {text1:document.all.text1.value, text2:document.all.text2.value};
  rtn=window.showModalDialog(
    "child.html", 
    obj,
    "dialogHeight:200px; dialogWidth:400px;");
  document.getElementById("res").innerHTML = rtn;
}
-->
</script>

<body>
<input type="button" value="windowを起動します" onclick="openChild();"><br/>
param1:<input type="text" name="text1" value=""><br/>
param2:<input type="text" name="text2" value=""><br/>
子画面からのparam=<div id="res"></div>
</body>
</html> 

子ウィンドウ

<html>
<script language="Javascript">
<!--
  var obj = window.dialogArguments;
  document.write("受け取ったパラメータ→text1=" 
    +  obj.text1 + "  text2=" + obj.text2);

function btn_click() {
  window.returnValue=document.all.text1.value;
  window.close();
}
-->
</script>
<body>
  <input type="button" value="親画面にセット" onclick="btn_click()">
  <input type="text" name="text1" value="">
</body>
</html>