WebBrowserコントロールの今後 への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 Fujiko  (社会人)
投稿日時
2020/6/12 16:30:59
WebView2のことはよく理解していないのですが、WebView2って、表示DocumentのElementByIdやElementsByTagNameのような、タグに対する解析も可能なのでしょうか?
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2020/6/10 15:30:44
最近、WebView2 の .NET 対応版となる 0.9.538-prerelease が公開されました。
安定版 0.9.538 ではなく、0.9.538-prerelease の方を使うことに注意してください。
https://www.nuget.org/packages/Microsoft.Web.WebView2/0.9.538-prerelease
https://github.com/MicrosoftEdge/WebViewFeedback/issues/46
安定版 0.9.538 ではなく、0.9.538-prerelease の方を使うことに注意してください。
https://www.nuget.org/packages/Microsoft.Web.WebView2/0.9.538-prerelease
https://github.com/MicrosoftEdge/WebViewFeedback/issues/46
投稿者 るきお  (社会人)
投稿日時
2020/6/10 12:51:58
以前のロードマップに
Add Chromium-based Edge browser control
と書いてあり、多分、これが WebView2 になったのだと思います。
Windows Forms アプリでの WebView2 の概要 (プレビュー)
https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms
Microsoft Edge WebView2 の概要 (プレビュー)
https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/
以前のロードマップ
https://github.com/dotnet/winforms/commit/31d08e95b8ec17cfa5f9d4dcb2dd3401daafd7ed#diff-cd4a1b36ed2b93cfc52abf77a7d25d03
Add Chromium-based Edge browser control
と書いてあり、多分、これが WebView2 になったのだと思います。
Windows Forms アプリでの WebView2 の概要 (プレビュー)
https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/gettingstarted/winforms
Microsoft Edge WebView2 の概要 (プレビュー)
https://docs.microsoft.com/ja-jp/microsoft-edge/webview2/
以前のロードマップ
https://github.com/dotnet/winforms/commit/31d08e95b8ec17cfa5f9d4dcb2dd3401daafd7ed#diff-cd4a1b36ed2b93cfc52abf77a7d25d03
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2020/6/10 12:23:46
> 今後、WebBrowserコントロールはサポートされなくなるのでしょうか?
そもそも、 Windows 10 の長期サービスチャネル(LTSB/LTSC)版や Windows Server では
「Internet Explroer 11 が標準ブラウザー」であり、Microsoft Edge レガシは搭載されていません。
また、WebBrowser コントロールは、.NET Framework 2.0~4.8 だけでなく、
.NET Core 3.0 / 3.1 および .NET 5 でもサポートされます。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.webbrowser
その意味において、アプリから WebBrowser が直ちに使えなくなる…ということは無いでしょう。
WebBrowser では利用できないサイトというのはあるにしても。
> IEを現在または今後サポート対象外とするサイトが増えてきています。
New Edge や Chrome のみを推奨とした Web サイトがあるのは確かで、その場合、
Edge Legacy や Internet Explorer/WebBrowser では対応できなくなりますね。
以下、参考までに。使った事が無い物が多いので間違っているかも。
(準備中のものや、サポート終了したものもあります)
Trident エンジン (Internet Explorer) ベースなら:
WebBrowser (System.Windows.Forms.WebBrowser)
Microsoft Web Browser (ActiveX: ieframe.dll)
EdgeHTML エンジン (Edge Legacy) ベースなら:
WebView (Microsoft.Toolkit.Forms.UI.Controls.WebView)
WebView2 (Microsoft.Web.WebView2.WinForms.WebView2 / MtrDev.WebView2.Winforms.WebView2Control)
WebKit エンジン (Chrome Legacy) ベースなら:
WebKit.NET (WebKit.WebKitBrowser)
Awesomium (Awesomium.Windows.Forms.WebView)
Blink エンジン (Chrome、Edge) ベースなら:
CefSharp (CefSharp.WinForms.ChromiumWebBrowser)
EO.WebBrowser (EO.WinForm.WebControl)
DotNetBrowser (DotNetBrowser.WinForms.BrowserView)
Gecko エンジン (FireFox) ベースなら:
GeckoFX (Skybound.Gecko.GeckoWebBrowser)
そもそも、 Windows 10 の長期サービスチャネル(LTSB/LTSC)版や Windows Server では
「Internet Explroer 11 が標準ブラウザー」であり、Microsoft Edge レガシは搭載されていません。
また、WebBrowser コントロールは、.NET Framework 2.0~4.8 だけでなく、
.NET Core 3.0 / 3.1 および .NET 5 でもサポートされます。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.webbrowser
その意味において、アプリから WebBrowser が直ちに使えなくなる…ということは無いでしょう。
WebBrowser では利用できないサイトというのはあるにしても。
> IEを現在または今後サポート対象外とするサイトが増えてきています。
New Edge や Chrome のみを推奨とした Web サイトがあるのは確かで、その場合、
Edge Legacy や Internet Explorer/WebBrowser では対応できなくなりますね。
以下、参考までに。使った事が無い物が多いので間違っているかも。
(準備中のものや、サポート終了したものもあります)
Trident エンジン (Internet Explorer) ベースなら:
WebBrowser (System.Windows.Forms.WebBrowser)
Microsoft Web Browser (ActiveX: ieframe.dll)
EdgeHTML エンジン (Edge Legacy) ベースなら:
WebView (Microsoft.Toolkit.Forms.UI.Controls.WebView)
WebView2 (Microsoft.Web.WebView2.WinForms.WebView2 / MtrDev.WebView2.Winforms.WebView2Control)
WebKit エンジン (Chrome Legacy) ベースなら:
WebKit.NET (WebKit.WebKitBrowser)
Awesomium (Awesomium.Windows.Forms.WebView)
Blink エンジン (Chrome、Edge) ベースなら:
CefSharp (CefSharp.WinForms.ChromiumWebBrowser)
EO.WebBrowser (EO.WinForm.WebControl)
DotNetBrowser (DotNetBrowser.WinForms.BrowserView)
Gecko エンジン (FireFox) ベースなら:
GeckoFX (Skybound.Gecko.GeckoWebBrowser)
投稿者 Fujiko  (社会人)
投稿日時
2020/6/10 10:24:25
今までWebBrowserコントロールを使った手製アプリを作ったりしましたが、
WebBrowserのベースはIE7で、必要に応じIEの上位バージョンにエミュレートしていました。
(具体的にはレジストリ設定)
ただ、最近では、IEを現在または今後サポート対象外とするサイトが増えてきています。
MicrosoftもEdgeを使ってもらいたいようです。
この流れで、今後、IEがベースのWebBrowserコントロールがどうなっていくのかが心配です。
WebBrowserのエミュレートでも、IE11(Edgeモード)というものがあるようですが、
これでIEお断りのサイトに対応できるのかどうか分かりません。
(やってみればすぐ分かるのかも知れませんが。)
旧来のWebページであれば、WebBrowserでも問題なく表示できるのですが、
今後、WebBrowserコントロールはサポートされなくなるのでしょうか?
WebBrowserのベースはIE7で、必要に応じIEの上位バージョンにエミュレートしていました。
(具体的にはレジストリ設定)
ただ、最近では、IEを現在または今後サポート対象外とするサイトが増えてきています。
MicrosoftもEdgeを使ってもらいたいようです。
この流れで、今後、IEがベースのWebBrowserコントロールがどうなっていくのかが心配です。
WebBrowserのエミュレートでも、IE11(Edgeモード)というものがあるようですが、
これでIEお断りのサイトに対応できるのかどうか分かりません。
(やってみればすぐ分かるのかも知れませんが。)
旧来のWebページであれば、WebBrowserでも問題なく表示できるのですが、
今後、WebBrowserコントロールはサポートされなくなるのでしょうか?
実際は CefSharp と同様、Chromium 系のエンジンです。m(_ _)m
現在はまだ開発中のバージョンなので、過去に blog 等で紹介されていたサンプルも、
仕様変更(メソッド名の変更など)によって、動かないという事態も起こりえます。
リリースノートやリファレンスを読み解ける力量が要求されますね。
> 表示DocumentのElementByIdやElementsByTagNameのような
ElementById というのは、getElementById のことでしょうか。
だとすれば、実行時にスクリプトを挿入して window.document にアクセスしてください。
WebBrowser の場合とは操作手順がかなり異なりますが、
るきおさんが紹介してくださったサンプルにもあるように、
VB 側では PostWebMessageAs{String|JSON} メソッド / WebMessageReceived イベント、
Web 側では window.chrome.webview.postMessage / window.chrome.webview.addEventListener
が準備されていますので、これを使ってデータの受け渡しや操作を行えます。
あとは ExecuteScriptAsync メソッドとか AddHostObjectToScript メソッドとか。