回答編集履歴

1

見直しキャンペーン中

2023/07/26 13:54

投稿

TN8001
TN8001

スコア10106

answer CHANGED
@@ -1,71 +1,72 @@
1
- `target="_blank"`でも無視して遷移します。
2
- `teratail`が入っていないURLは規定ブラウザで開きます。
3
- フッターにある↓が確認にいいでしょう。
4
-
5
- <a href="http://blog.teratail.com/" target="_blank">公式ブログ</a>
6
- <a href="/report" target="_blank">teratail Report</a>
7
-
8
- <a href="http://leverages.jp/" target="_blank">運営会社</a>
9
- <a href="http://leverages.jp/privacypolicy/" target="_blank">個人情報保護方針</a>
10
-
11
-
12
- ```C#
13
- using Microsoft.Web.WebView2.Core;
14
- using Microsoft.Web.WebView2.WinForms;
15
- using System;
16
- using System.Diagnostics;
17
- using System.Threading.Tasks;
18
- using System.Windows.Forms;
19
-
20
- namespace Questions320460
21
- {
22
- public partial class Form1 : Form
23
- {
24
- private WebView2 webView2;
25
-
26
- public Form1()
27
- {
28
- InitializeComponent();
29
- webView2 = new WebView2
30
- {
31
- Source = new Uri("https://teratail.com/questions/320460"),
32
- Dock = DockStyle.Fill,
33
- };
34
- webView2.NavigationStarting += WebView2_NavigationStarting;
35
-
36
- Controls.Add(webView2);
37
-
38
- _ = InitializeAsync();
39
- }
40
-
41
- private async Task InitializeAsync()
42
- {
43
- await webView2.EnsureCoreWebView2Async(null); // CoreWebView2初期化待ち
44
- webView2.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
45
- }
46
-
47
- private void WebView2_NavigationStarting(object sender, CoreWebView2NavigationStartingEventArgs e)
48
- {
49
- if (!e.Uri.Contains("teratail"))
50
- {
51
- e.Cancel = true; // Navigationのキャンセル
52
- Process.Start(e.Uri);
53
- return;
54
- }
55
- }
56
-
57
- private void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
58
- {
59
- e.Handled = true; // NewWindowのキャンセル
60
-
61
- if (!e.Uri.Contains("teratail"))
62
- {
63
- Process.Start(e.Uri);
64
- return;
65
- }
66
-
67
- webView2.CoreWebView2.Navigate(e.Uri); // 既存WebView2で遷移
68
- }
69
- }
70
- }
1
+ `target="_blank"`でも無視して遷移します。
2
+ `teratail`が入っていないURLは規定ブラウザで開きます。
3
+
4
+ フッターにある↓が確認にいいでしょう。
5
+ ```html
6
+ <a href="http://blog.teratail.com/" target="_blank">公式ブログ</a>
7
+ <a href="/report" target="_blank">teratail Report</a>
8
+
9
+ <a href="http://leverages.jp/" target="_blank">運営会社</a>
10
+ <a href="http://leverages.jp/privacypolicy/" target="_blank">個人情報保護方針</a>
11
+ ```
12
+
13
+ ```cs
14
+ using Microsoft.Web.WebView2.Core;
15
+ using Microsoft.Web.WebView2.WinForms;
16
+ using System;
17
+ using System.Diagnostics;
18
+ using System.Threading.Tasks;
19
+ using System.Windows.Forms;
20
+
21
+ namespace Questions320460
22
+ {
23
+ public partial class Form1 : Form
24
+ {
25
+ private WebView2 webView2;
26
+
27
+ public Form1()
28
+ {
29
+ InitializeComponent();
30
+ webView2 = new WebView2
31
+ {
32
+ Source = new Uri("https://teratail.com/questions/320460"),
33
+ Dock = DockStyle.Fill,
34
+ };
35
+ webView2.NavigationStarting += WebView2_NavigationStarting;
36
+
37
+ Controls.Add(webView2);
38
+
39
+ _ = InitializeAsync();
40
+ }
41
+
42
+ private async Task InitializeAsync()
43
+ {
44
+ await webView2.EnsureCoreWebView2Async(null); // CoreWebView2初期化待ち
45
+ webView2.CoreWebView2.NewWindowRequested += CoreWebView2_NewWindowRequested;
46
+ }
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
+ }
57
+
58
+ private void CoreWebView2_NewWindowRequested(object sender, CoreWebView2NewWindowRequestedEventArgs e)
59
+ {
60
+ e.Handled = true; // NewWindowのキャンセル
61
+
62
+ if (!e.Uri.Contains("teratail"))
63
+ {
64
+ Process.Start(e.Uri);
65
+ return;
66
+ }
67
+
68
+ webView2.CoreWebView2.Navigate(e.Uri); // 既存WebView2で遷移
69
+ }
70
+ }
71
+ }
71
72
  ```