• 締切済み

showModalDialogの代替について

当然ながら、window.returnValue、これ一行で親は子画面からの情報は入手出来ましたが、IE廃止に伴って、callback関数に変更して対応しました。 それで一つ問題がありまして、キャンセルの情報を入手したいです。 子画面.htmlの中の画面情報。(簡素化するため短めに編集しました) *************************************************************** <input size="30" type="password" id="addr_pass" value=""> <input type="button" value="OK" onClick="check()"> <input type="button" value="キャンセル" onclick="window.close();"> *************************************************************** 子画面.jsの中身 *************************************************************** var callbackid = window.name; var returnValue = { addr_pass: document.getElementById('addr_pass').value }; window.opener[callbackid](returnValue); window.close(); ******************************************************************* addr_passの入力情報は親.htmlに返す事は可能になりましたが 親.htmlにキャンセル情報を返すためには、何かしら必要になると思いますが、どのようにすれば宜しいでしょうか。 よろしくお願いいたします。 追記。 showModalDialogは便利なのに需要がないのはわかりますけどね。

みんなの回答

  • dell_OK
  • ベストアンサー率13% (771/5734)
回答No.1

こんな方法はどうでしょうか。 キャンセルボタンはcancel()を呼ぶようにして、 <input type="button" value="キャンセル" onclick="cancel();"> その処理はこんな感じで、キャンセル情報を設定して、 function cancel() { var callbackid = window.name; var returnValue = { cancel: true }; window.opener[callbackid](returnValue); window.close(); } 親では、returnValue.cancelを判定するようにします。 親のコールバック定義をどのようにされているのかわからないので、 適当に書いてます。 window[callbackId] = function (returnValue) { if (returnValue.cancel) { alert("キャンセル"); } else { document.getElementById('addr_pass').value = returnValue.addr_pass; } } OKの時は、キャンセルではないとしてこうしておいた方が無難かもしれません。 var returnValue = { cancel: false, addr_pass: document.getElementById('addr_pass').value };

yodogou
質問者

補足

終わっちゃったよー 色々検索して、色々見てたら気がついちゃったよー そそ、同じですね、okの時と同じように、 セクション作成して、 function checkcan(){ ここで設定すれば簡単な話でしたー、 せっかく教えて頂きましたが、自己解決です。

関連するQ&A

専門家に質問してみよう