3

HLS ビデオを再生するために Microsoft Edge (Chromium) に Chrome 拡張機能をインストールしました。Microsoft Edge (Chromium) で試してみましたが、問題なく動作します。HLS の URL はhttp://localhost/hls/taiguo/playlist.m3u8で、Microsoft Edge ブラウザーでは次のように表示されます。プレイリスト.m3u8 .

[Getting Started with WebView2 (developer preview)] ( https://docs.microsoft.com/en-us/microsoft-edge/hosting/webview2/gettingstarted ) サンプル コードに従って、WebView2 を使用して Windows アプリケーションにブラウザーを埋め込む場合:

` CreateCoreWebView2EnvironmentWithDetails(nullptr, nullptr, nullptr, Callback( [hWnd](HRESULT result, ICoreWebView2Environment* env) -> HRESULT {

    RETURN_IF_FAILED(result);
    // Create a CoreWebView2Host and get the associated CoreWebView2 whose parent is the main window hWnd
    env->CreateCoreWebView2Host(hWnd, Callback<ICoreWebView2CreateCoreWebView2HostCompletedHandler>(
        [hWnd](HRESULT result, ICoreWebView2Host* host) -> HRESULT {
        if (host != nullptr) {
            webviewHost = host;
            webviewHost->get_CoreWebView2(&webviewWindow);
        }

        // Add a few settings for the webview
        // this is a redundant demo step as they are the default settings values
        ICoreWebView2Settings* Settings;
        webviewWindow->get_Settings(&Settings);
        Settings->put_IsScriptEnabled(TRUE);
        Settings->put_AreDefaultScriptDialogsEnabled(TRUE);
        Settings->put_IsWebMessageEnabled(TRUE);

        // Resize WebView to fit the bounds of the parent window
        RECT bounds;
        GetClientRect(hWnd, &bounds);
        webviewHost->put_Bounds(bounds);

        // Schedule an async task to navigate to Bing
        webviewWindow->Navigate(L"http://localhost/hls/taiguo/playlist.m3u8");`

上記のコードを実行すると、アプリはビデオを再生せずにプレイリスト.m3u8 ファイルをダウンロードするだけです。webviewWindow->Navigate(...) の URL パラメータを次のように変更すると:

webviewWindow->Navigate(L"extension://ekcifneimckhkjdfklkkpdlnckcjhmke/index.html#http://localhost/hls/taiguo/playlist.m3u8");

その後、次のようなエラー メッセージが表示されます。 アプリの画面キャプチャ

誰かが WebView2 API を使用して拡張機能を実行する方法を教えてくれることを願っています。

4

1 に答える 1

6

私は WebView2 プロジェクトに取り組んでいます。まず、WebView2 は現在拡張機能をサポートしていません。これはかなり複雑な機能であり、かなりの数の設計上の選択を行う必要があるため、これらを解決する前に、意図的に拡張機能をオフにします。私たちは将来的にそれをサポートすることにオープンであり、機能要求を追跡するフィードバック リポジトリに問題があります - https://github.com/MicrosoftEdge/WebViewFeedback/issues/81. あなたが探しているものについてより多くのコンテキストを持っているので、あなたのユースケースについて話してくれるとうれしいです. たとえば、アプリの任意の拡張機能を有効にする開発者 (たとえば、Web コンテンツを監視する広告ブロッカーが必要) は、エンド ユーザーに拡張機能をインストールする方法をエンド ユーザーに提供することとは大きく異なります。ウェブビュー。

とはいえ、技術的な観点からは、現在 WebView2 が拡張機能をサポートしていても、ユーザーがブラウザーからインストールした拡張機能は WebView2 に表示されません。ブラウザーは拡張機能をユーザー データ フォルダー (C:\Users\ username \AppData\Local\Microsoft\Edge SxS\User Data\Default\Extensions for Canary を参照) に保存します。このフォルダーには、Cookie、キャッシュなども含まれます。アプリには独自のユーザー データ フォルダーがあり、セキュリティ上の理由からブラウザーのユーザー データを使用できません。

于 2020-05-10T07:41:40.600 に答える