1. Web ページのビデオを再生できません。これは、UE4 の WebBrowser に cef3 バージョン 3071 が付属しており、デフォルトでは h264 およびその他のライブ ストリームをサポートしていないため、Web 内のライブ ストリームを再生できません。
解決策: 最初の方法は、H.264 をサポートするように cef ソース コードを再コンパイルし、UE4 インストール ディレクトリ内の関連ファイルを置き換えることです。インターネット上にチュートリアルがあるので、自分で検索してください。2 番目の方法は、変更されたプラグイン、淘宝網を直接見つけることです。
2. Web ページのスライダーを非表示にする
解決策: ウェブブラウザの ExecuteJavascript 関数を使用して、js コードを実行します。このコードの一般的な意味は、スライダーの長さと幅を 0 に設定して、スライド項目を非表示にすることです。js コードは次のとおりである必要があることに注意してください。 Web ページの前に完全にロードされる js コードを正しく実行しますが、UE には Web ページを完全にロードするためのコールバックがないため、この関数を使用する前に遅延を追加し、特定の遅延を自分でテストする必要があります。
var style = document.createElement('style');style.type = 'text/css';style.innerHTML = '::-webkit-scrollbar {width: 0px;height: 0px;}';document.getElementsByTagName('head')[0].appendChild(style);
3. Webブラウザで開いたWebページでは編集ボックスに中国語を入力できません
解決策: ソース コードを変更し、WebViewBrowser.cpp 内の RebuildWidget 関数を見つけて変更します。
//支持中文输入
ITextInputMethodSystem* const TextInputMethodSystem = FSlateApplication::Get().GetTextInputMethodSystem();
WebViewBrowserWidget->BindInputMethodSystem(TextInputMethodSystem);
4. OnTouchMoved メソッドが WebViewBrowserViewport クラスで書き換えられていないため、タッチ スクリーンでは上下のスライドはサポートされていません。
解決策: このメソッドを書き換えてロジックを実装します。もう 1 つの問題は、タッチ スクリーン上で移動すると、OnMouseButtonDown 関数と OnTouchMove 関数が同時にトリガーされることです。Web ページ内でスライドするロジックとボタンをクリックするロジックは、が同時に発生するため、ボタンイベントが発生しないように OnMouseButtonUp で判断する必要があります。
virtual FReply OnTouchMoved(const FGeometry& MyGeometry, const FPointerEvent& InTouchEvent) override;
FVector2D clickpos;
clickpos = MouseEvent.GetScreenSpacePosition();
FVector2D vec = MouseEvent.GetScreenSpacePosition() - clickpos;
if (!(FMath::Abs(vec.Y) < 1))
{
return FReply::Handled();
}
FReply FWebViewBrowserViewport::OnTouchMoved(const FGeometry& MyGeometry, const FPointerEvent& InTouchEvent)
{
FVector2D vec = InTouchEvent.GetCursorDelta();
FString str = FString::Printf(TEXT("window.scrollBy(0,%f);"), vec.Y * -1);
WebViewBrowserWindow->ExecuteJavascript(str);
return FReply::Handled();
}