none
Windowsフォームに配置したWebView2コントロールとJavaScriptの連動の仕方について RRS feed

  • 質問

  • Windowsフォームアプリに配置したWebView2とJavaScriptの連携方法について質問させて下さい。

    JavaScriptからのアプリに情報を渡す
    ・「WebView」コントロール → 「ScriptNotify」イベントを定義
    ・「WebView2」コントロール → デザインビューのイベントの中から、それっぽいモノを見つけられず…

    JavaScriptを実行する
    ・「WebView」コントロール → webView.InvokeScript("eval", new string() {"hello, webview"})メソッド等を利用。引数は適当
    ・「WebView2」コントロール → 方法自体分からず…

    仮に、「WebView2」コントロールで上記「WebView」と同一結果にするには、どうすればよろしいでしょうか?
    既存のjsファイル等は、内容を変更せずに利用可能でしたら、jsはそのまま利用したいです。

    以上、お手数をおかけしますが、よろしくお願いします。
    2020年6月16日 1:28

回答

  • WebViewは触ったことがないので、そちらとどう違うのかは説明できませんが…。

    まず基本として、WebView2ではWebView2コントロールそのものではなく、それが持っているCoreWebView2プロパティを通じてChromiumとやり取りします。デザイナでイベントを扱うのは諦めてください。

    JavaScriptとのやり取りには、PostWebMessageAsJson(またはPostWebMessageAsString)メソッドと、WebMessageReceivedイベントを使用できます。具体的な使い方は、以下のページが参考になるでしょう。C++のサンプルですが、まあ大体やることは同じです。

    https://github.com/MicrosoftEdge/WebView2Browser#communicating-the-webviews

    スクリプトの実行は、ExecuteScriptAsyncメソッドを使用できます。


    • 編集済み Hongliang 2020年6月16日 2:16
    • 回答としてマーク mexicanafro 2020年6月17日 5:51
    2020年6月16日 2:12

すべての返信

  • WebViewは触ったことがないので、そちらとどう違うのかは説明できませんが…。

    まず基本として、WebView2ではWebView2コントロールそのものではなく、それが持っているCoreWebView2プロパティを通じてChromiumとやり取りします。デザイナでイベントを扱うのは諦めてください。

    JavaScriptとのやり取りには、PostWebMessageAsJson(またはPostWebMessageAsString)メソッドと、WebMessageReceivedイベントを使用できます。具体的な使い方は、以下のページが参考になるでしょう。C++のサンプルですが、まあ大体やることは同じです。

    https://github.com/MicrosoftEdge/WebView2Browser#communicating-the-webviews

    スクリプトの実行は、ExecuteScriptAsyncメソッドを使用できます。


    • 編集済み Hongliang 2020年6月16日 2:16
    • 回答としてマーク mexicanafro 2020年6月17日 5:51
    2020年6月16日 2:12
  • ご連絡、ありがとうございます。

    c++は初めてですが、学習がてらチャレンジしようと思います。

    この度は、本当にありがとうございました。

    2020年6月17日 5:57