2 つのウィンドウがあります: A ウィンドウ (親)、B ウィンドウ (モーダル)
A ウィンドウには DATAGRID とボタンがあります。
ボタンをクリックするとウィンドウB(モーダル)が表示されます。 B ウィンドウにデータを追加します。送信後、B ウィンドウを自動的に閉じてから、A ウィンドウ (親) を更新します。
サブフォーム b.html をポップアップし、サブフォームが更新されたときに親ページをトリガーします。終了しました
最近マテリアル システムに取り組んでいたときに、モーダル ウィンドウの問題が再び発生しました。前回作業したときは、今回はあまり遭遇しませんでした。
親ウィンドウの js メソッド
function openwin(id ){
varanswer=window.showModalDialog("demand.do?method=queryBOM&mdid=" id "&d="escape(new Date()),window.self,"dialogWidth:700px;dialogHeight:620px:center: yes");
if(answer==1){
window.location.href = "demand.do?method=selmd&d="escape(new Date()); //処理ページに移動
//window.location.reload(); 親ウィンドウを更新します
//winow.location.reload(true)
}
}
キャッシュの読み取りを回避するには、escape(new Date()) を追加します。もちろん、
コードは次のとおりです。
function reVal(){
window.returnValue=1;親ウィンドウ
window.close();
}
モーダルウィンドウを開いた後、親ウィンドウは、フォーム送信の場合、子ウィンドウが値を返すのを待ちます。またはボタンを押すと、reVal() メソッド
が実行されて、回答の値、window.returnValue=1 が返されます。この場所をテストしたところ、String 型のみを返すことができるようです。配列型はうまく機能しません。
サブウィンドウで window.opener.location.reload() を使用するとうまく動作しません。モーダル ウィンドウを使用しないでください。window.opern() は正常に動作します。
もう 1 つの問題: モーダル ウィンドウでフォームを送信すると、新しいウィンドウが表示されます。この問題は、 に を追加するだけで解決できます。最初はフォームから送信したかったのですが、js window.location.href を使用して処理のために別のアクションにジャンプしたところ、
が機能しなかったようです。
フォーム action="" でのみ機能します。これは iframe を使用して実装する必要があります。