前提・実現したいこと
現在、IE11で動作している既存のウェブサービスをEdge(chorome版)でも
動作するように修正・対応してきた中で、window.openの挙動の差異について
理由が分からず、対策可能か判断ができず困っております。
多分ですが、window.openや画面の親子関係について
そもそもの考え方が誤っている可能性もあるため
参考になるサイトなど教えていただければ助かります。
発生している問題
window.openのname値を固定値で設定した状態で子画面を表示するhtmlを
複数の画面(下記ではA画面、B画面と表記)で表示している状態で
各画面から子画面表示を行った場合にIE11とEdgeで挙動が異なる。
- IE11の場合
1.A画面のwindow.openで子画面を呼び出すと新規画面で表示された。
2.B画面のwindow.openで子画面を呼び出すとA画面で表示した子画面を更新した。
- Edgeの場合
1.A画面のwindow.openで子画面を呼び出すと新規画面で表示された。(IE11と同じ)
2.B画面のwindow.openで子画面を呼び出すと新規画面で表示された。(差異部分)
該当のソースコード
HTML
1oya.html 2 3<html> 4<head> 5<title>親</title> 6 <SCRIPT type="text/javascript"> 7 <!-- 8 function opnWin() { 9 window.open('','WIN2'); 10 document.newwin.method="post"; 11 document.newwin.action="ko.html"; 12 document.newwin.submit(); 13 } 14 //--> 15 </SCRIPT> 16</head> 17<body> 18 <form name="newwin" target="WIN2"> 19 <input type="button" value="子画面表示(WIN2)" onclick="opnWin();"> 20 </form> 21</body> 22</html>
HTML
1ko.html 2 3<html> 4<head> 5<title>子</title> 6 <SCRIPT type="text/javascript"> 7 <!-- 8 var now = new Date(); 9 function gettime() { 10 var target = document.getElementById("DataTimeDsp"); 11 var YYYY = now.getFullYear(); 12 var Mnt = now.getMonth() + 1; 13 var DD = now.getDate(); 14 var HH = now.getHours(); 15 var MM = now.getMinutes(); 16 var SS = now.getSeconds(); 17 target.innerHTML = YYYY + "/" + Mnt + "/" + DD + " " + HH + ":" + MM + ":" + SS; 18 } 19 //--> 20 </SCRIPT> 21</head> 22<body onload="gettime();" > 23 子画面<BR> 24 <div id="DataTimeDsp"> 25</body> 26</html>
試したこと
-
IE11を2つのウィンドウで立ち上げて、それぞれの画面でoya.htmlを表示し、画面にある「子画面表示(WIN2)」ボタンを押下すると、1つの子画面が表示され、お互いこの1画面を利用する。
-
Edgeを2つのウィンドウで立ち上げて、それぞれの画面でoya.htmlを表示し、画面にある「子画面表示(WIN2)」ボタンを押下すると、2つの子画面が表示され、自身が表示した画面を利用する。
-
親子関係の問題であれば、oya.htmlの前にさらに先祖画面のようなものを作成して実施したが、問題の解消には至らなかった。
補足情報(FW/ツールのバージョンなど)
テスト環境
Windows 10 Pro 21H1
Edge バージョン 96.0.1054.62 (公式ビルド) (64 ビット)
IE11 11.789.19041.0
回答1件
あなたの回答
tips
プレビュー