如何停止在WebView中播放视频

时间:2019-01-07 14:28:36

标签: webview xamarin.forms xamarin.uwp

我正在使用Xamarin.Forms应用程序(UWP!)。它具有主从结构。母版页具有一个ListView,并且其中的每个项目都会打开一个对应的“详细信息”页。第一个“详细信息”页面只有一个WebView,该WebView在加载时播放YouTube视频。现在,第二个“详细信息”视图仅具有一个占位符标签。我从第一个“详细信息”页面切换到第二个“详细信息”页面时,仍然听到了第一个“详细信息”页面中的视频声音。当我切换回第一个“详细信息”页面时,视频再次加载,现在我听到了两种声音。切换到第二个“详细信息”页面时如何停止视频并返回时继续播放?如果这不可能,那么如何在退出“详细信息”页面后立即停止播放视频?

我想我可以在详细信息页面的重写的OnDisappearing()方法中做一些事情:

    protected override void OnDisappearing()
    {
        MyWebView.NavigateToString(""); // This does not work, as NavigateToString() is not part of WebView. 
        base.OnDisappearing();
    }

您能告诉我我可以用来停止在WebView中播放视频吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

  

您能告诉我我可以用来停止在WebView中播放视频吗?

根据您的要求,您可以注入Eval Java脚本。

WebView

更新

我已经重新检查了您的问题,当您导航到另一页时,WebView未被正确释放。如果要停止WebViewRenderer视频播放,可以通过自定义[assembly: ExportRenderer(typeof(WebView), typeof(CustomWebViewRender))] namespace App4.UWP { class CustomWebViewRender : WebViewRenderer { private Windows.UI.Xaml.Controls.WebView _WebView; protected override void OnElementChanged(ElementChangedEventArgs<WebView> e) { base.OnElementChanged(e); if (Control != null) { var source = Element.Source as UrlWebViewSource; _WebView = new Windows.UI.Xaml.Controls.WebView(); SetNativeControl(_WebView); } } protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged(sender, e); if (e.PropertyName == WebView.SourceProperty.PropertyName) { var source = Element.Source as UrlWebViewSource; if (source.Url == string.Empty) { _WebView.NavigateToString(string.Empty); } } } } } 使其导航到空白页面。

protected override void OnAppearing()
{
    base.OnAppearing();
    MyWebView.Source = "https://www.youtube.com";
}
protected override void OnDisappearing()
{
    MyWebView.Source = string.Empty;
    base.OnDisappearing();
}

用法

<WebView HeightRequest="500" WidthRequest="500"  x:Name="MyWebView"/>

Xaml

^([A-Za-z]{3})-RO-.*