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