如何检测WKWebView正在关闭,来自javascript

时间:2017-05-18 19:46:43

标签: javascript ios audio wkwebview

我们使用在iOS上的WKWebView对象中运行的javascript播放流式音频。如果WKWebView被破坏或不再显示,音频通常会继续播放完成。用户停止音频的唯一方法是向上滑动以获得锁定屏幕播放控件并点击“暂停”。

是否有办法通知WKWebView中的javascript即将关闭,以便在WKWebView被销毁之前停止播放音频?

我已经尝试过挂机'卸载'' beforeunload'以及' visibilitychange'事件,没有运气。

我确定可以从本机代码触发自定义事件,但我无法控制这方面的事情。还有什么有效吗?

1 个答案:

答案 0 :(得分:0)

此错误显然已在iOS 8.3+中修复,但建议的答案是在视图消失时加载空白页面,效果很好,并且如果支持在较早版本的OS上运行的应用程序,则可能会很有用。这种方法比依赖WKWebView中运行的每个JS实现在通知Web视图即将“关闭”后停止其自己的媒体回放更具弹性:

在WKWebView视图控制器类的-(void)viewDidDisappear:(BOOL)animated方法中,运行以下代码以将空白页加载到Web视图中。该代码假定您对Web视图的引用是self.webView,因此可以根据需要进行修改。

// fix to prevent embedded audio/video from playing once the view has closed... [self.webView loadHTMLString:@"<html/>" baseURL:nil];

有关更多详细信息,请参见WKWebView embed video keeps playing sound after release ...