質問編集履歴

3

タグ追加

2023/01/31 08:55

投稿

mimon
mimon

スコア15

test CHANGED
File without changes
test CHANGED
File without changes

2

説明不足の指摘あり

2023/01/31 08:08

投稿

mimon
mimon

スコア15

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

1

不適切なタグの削除

2023/01/31 06:30

投稿

mimon
mimon

スコア15

test CHANGED
File without changes
test CHANGED
File without changes