回答編集履歴

1

見直しキャンペーン中

2023/07/26 13:54

投稿

TN8001
TN8001

スコア9855

test CHANGED
@@ -1,141 +1,72 @@
1
1
  `target="_blank"`でも無視して遷移します。
2
-
3
- `teratail`が入っていないURLは規定ブラウザで開きます。
2
+ `teratail`が入っていないURLは規定ブラウザで開きます。
4
3
 
5
4
  フッターにある↓が確認にいいでしょう。
6
-
5
+ ```html
7
-
8
-
9
6
  <a href="http://blog.teratail.com/" target="_blank">公式ブログ</a>
10
-
11
7
  <a href="/report" target="_blank">teratail Report</a>
12
8
 
9
+ <a href="http://leverages.jp/" target="_blank">運営会社</a>
10
+ <a href="http://leverages.jp/privacypolicy/" target="_blank">個人情報保護方針</a>
11
+ ```
13
12
 
14
-
15
- <a href="http://leverages.jp/" target="_blank">運営会社</a>
16
-
17
- <a href="http://leverages.jp/privacypolicy/" target="_blank">個人情報保護方針</a>
18
-
19
-
20
-
21
-
22
-
23
- ```C#
13
+ ```cs
24
-
25
14
  using Microsoft.Web.WebView2.Core;
26
-
27
15
  using Microsoft.Web.WebView2.WinForms;
28
-
29
16
  using System;
30
-
31
17
  using System.Diagnostics;
32
-
33
18
  using System.Threading.Tasks;
34
-
35
19
  using System.Windows.Forms;
36
20
 
37
-
38
-
39
21
  namespace Questions320460
40
-
41
22
  {
42
-
43
23
  public partial class Form1 : Form
44
-
45
24
  {
46
-
47
25
  private WebView2 webView2;
48
26
 
49
-
50
-
51
27
  public Form1()
52
-
53
28
  {
54
-
55
29
  InitializeComponent();
56
-
57
30
  webView2 = new WebView2
58
-
59
31
  {
60
-
61
32
  Source = new Uri("https://teratail.com/questions/320460"),
62
-
63
33
  Dock = DockStyle.Fill,
64
-
65
34
  };
66
-
67
35
  webView2.NavigationStarting += WebView2_NavigationStarting;
68
-
69
-
70
36
 
71
37
  Controls.Add(webView2);
72
38
 
73
-
74
-
75
39
  _ = InitializeAsync();
76
-
77
40
  }
78
41
 
79
-
80
-
81
42
  private async Task InitializeAsync()
82
-
83
43
  {
84
-
85
44
  await webView2.EnsureCoreWebView2Async(null); // CoreWebView2初期化待ち
86
-
87
45
  webView2.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
88
-
89
46
  }
90
47
 
48
+ private void WebView2_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
49
+ {
50
+ if (!e.Uri.Contains("teratail"))
51
+ {
52
+ e.Cancel = true; // Navigationのキャンセル
53
+ Process.Start(e.Uri);
54
+ return;
55
+ }
56
+ }
91
57
 
92
-
93
- private void WebView2_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
58
+ private void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
94
-
95
59
  {
60
+ e.Handled = true; // NewWindowのキャンセル
96
61
 
97
62
  if (!e.Uri.Contains("teratail"))
98
-
99
63
  {
100
-
101
- e.Cancel = true; // Navigationのキャンセル
102
-
103
64
  Process.Start(e.Uri);
104
-
105
65
  return;
106
-
107
66
  }
108
67
 
68
+ webView2.CoreWebView2.Navigate(e.Uri); // 既存WebView2で遷移
109
69
  }
110
-
111
-
112
-
113
- private void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
114
-
115
- {
116
-
117
- e.Handled = true; // NewWindowのキャンセル
118
-
119
-
120
-
121
- if (!e.Uri.Contains("teratail"))
122
-
123
- {
124
-
125
- Process.Start(e.Uri);
126
-
127
- return;
128
-
129
- }
130
-
131
-
132
-
133
- webView2.CoreWebView2.Navigate(e.Uri); // 既存WebView2で遷移
134
-
135
- }
136
-
137
70
  }
138
-
139
71
  }
140
-
141
72
  ```