如何检测WKWebView正在关闭,从javascript



我们使用在iOS上的WKWebView对象中运行的javascript播放流音频。如果该WKWebView被销毁或不再显示,音频通常会继续播放直到完成。用户停止音频的唯一方法是向上滑动以获取锁屏播放控件并点击"暂停"。

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

我尝试过挂钩到"页面隐藏"、"卸载"、"卸载前"和"可见性更改"事件,但没有运气。

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

此错误显然已在iOS 8.3 +中修复,但是在视图消失时加载空白页面的建议答案效果很好,如果支持在旧操作系统版本上运行的应用程序,则可能会很有用。这种方法也比依靠在 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嵌入视频在发布后继续播放声音以获取更多详细信息...

最新更新