
前提
visual studio2019
asp.net
Edge
asp.netでWebシステムを作成しています。
現在IEモードで使用しておりEdgeへの移行作業中です。
IEで使用時はjavascriptでwindow.open()を使用し、ログイン画面を最大化、戻るボタンやツールバーなどを非表示とし、Webシステムというよりはwindowsアプリのような見せ方をしていました。
以下、WebForm1.aspxファイルの中身です。
(aspxタグだと色がつかないのでjavascriptタグで記載します)
javascript
1// WebForm1.aspx 2<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication5.WebForm1" %> 3 4<!DOCTYPE html> 5 6<html xmlns="http://www.w3.org/1999/xhtml"> 7<head runat="server"> 8<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 9 <title></title> 10 <script type="text/javascript"> 11 function OnLoad() { 12 // 実際に有効な画面サイズ 13 var ash = window.screen.availHeight; 14 var asw = window.screen.availWidth; 15 16 url = 'WebForm2.aspx'; 17 // スクリプトでWebForm2をオープン 18 // 画面サイズとツールバーなどの見た目を制御するため 19 newWin = window.open(url, 'child', 'toolbar=0,location=0,menubar=0,status=1,scrollbars=1,resizable=1'); 20 newWin.moveTo(0, 0) 21 newWin.resizeTo(asw, ash); 22 } 23 function OnForceClose() 24 { 25 var w = window.open("about:blank", "_self"); 26 w.opener = window; 27 // edgeではCloseされません!閉じずにこの画面が残ります 28 w.close(); 29 } 30 </script> 31</head> 32<body onload="Javascript: OnLoad(); OnForceClose();"> 33 <form id="form1" runat="server"> 34 <div> 35 </div> 36 </form> 37</body> 38</html> 39
以下はopen.windowで開いたWebForm2.aspxファイルの中身です
クリックイベント用にボタンをひとつ配置しています。
javascript
1// WebForm2.aspx 2<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication5.WebForm2" %> 3 4<!DOCTYPE html> 5 6<html xmlns="http://www.w3.org/1999/xhtml"> 7<head runat="server"> 8<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> 9 <title></title> 10</head> 11<body> 12 <form id="form1" runat="server"> 13 <div> 14 </div> 15 <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> 16 </form> 17</body> 18</html>
IEではこのコードでWebForm1を閉じることができ、閉じてもWebForm2に影響はなく、WebForm2がメインとなってシステムが動くイメージです。
今回Edgeへの移行の際、window.open()で開いたウィンドウしかスクリプトでは閉じることができない(スクリプトで開いたものしかスクリプトで閉じられない)ことがわかり、呼び出し元のWebForm1が残るのは許容することにしました。
しかし、WebForm2が開いた状態でWebForm1を先に手動で閉じるとWebForm2のセッションが切れるようで、WebForm2でボタンクリックなどイベント操作を行うと
(WebForm1が表示されているEdgeを閉じてWebForm2のボタンをクリックする)
申し訳ございません。このページに到達できません
localhost により、接続が拒否されました。
というエラー画面が表示されるようになりました。
IEでは親ウィンドウを閉じても子ウィンドウに影響はなかったのですが、
Edgeでは仕様上、無理なのでしょうか?
何か方法があると助かるのですが・・・。
(後ろに隠れている呼び出し元ウィンドウが何かのはずみで前に出てきた時に、邪魔なので閉じたところ、その後子ウィンドウで画面操作を行うとエラーが発生し気が付いた次第です)
ちなみに開発環境(VisualStudio)でのみの検証です。
ですのでlocalhostでIISExpressで動かしています。






回答1件
あなたの回答
tips
プレビュー