前提・実現したいこと
モーダル画面機能がEdgeブラウザで廃止されたので、Edgeブラウザで子画面から親画面に値javascriptで受け渡したい
発生している問題・エラーメッセージ
window.opener[callback_id] is not a function
該当のソースコード
親画面.html <script type="text/javascript" src="子画面から親画面に値渡し.js"></script> <meta charset="UTF-8"> <body> <input type="button" value="変更" onClick="ButtonClick()" /> </body> <script type="text/javascript"> //変更ボタン押下時の処理 function ButtonClick(){ var callback_id = 'callback_modal'; window[callback_id] = function(ret) { //trueが表示されることを確認 alert(ret.status); return ret ? ret : {"status":false }; } //子画面ウインドウを開く //var ret = openChild("子画面.html"); var ret = openChild("子画面.html",window[callback_id]); //(ここ処理が通るのを確認したい) if(ret.status) { alert(ret.status); } } </script>
小画面から親画面に値渡し.js //モーダル画面呼び出し //function openChild(url) { function openChild(url,callback) { return openDialog(url,900,680,callback); } //function openDialog(url,width,height){ function openDialog(url,width,height,callback){ //var callback_id = 'callback_modal'; //window[callback_id] = function(ret) { ////trueが表示されることを確認 //alert(ret.status); //return ret ? ret : {"status":false }; //} //小画面呼び出し var ret window.open(url, callback, "dialogWidth:" + width + "px;" + "dialogHeight:" + height + "px;" + "center:yes; scroll:no;"); return ret; }
小画面.html <input type="button" value="確定" onClick="ButtonClick()"> <meta charset="UTF-8"> <script type="text/javascript"> //確定ボタン押下時 function ButtonClick(){ var ret = { "status" : true }; var callback_id = window.name; window.opener[callback_id](ret); window.close(); </script>
試したこと
https://qiita.com/hidehito108/items/f7ad9fe23736049a76d6
上記のサイトを参考にして、作業してみたのですがうまくいかず
htmlファイル2つでの値を受け渡す処理の記事は結構出てきたのですが、jsファイルを挟んで処理する
例は探してもなかったので、少し勝手が違うのでしょうか?
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
サーバー言語:java
ブラウザ:chromium版 Edge IEモード
デスクトップ上に置いてもエラーを吐くようなのでapache2.4.43をインストールしてローカルサーバー上にhtml,jsを設置して動作確認中
回答1件
あなたの回答
tips
プレビュー