我有一个正在播放 HTML5 视频的 WKWebView。当我单击主页按钮并且应用程序进入后台时,我仍然可以听到音频播放。如何暂停 HTML 5 视频以停止播放背景音频。我尝试在应用程序进入后台时加载一个空白页面,这可以正常工作,
let url = URL(string: "about:blank")
let request = URLRequest(url:url!)
self.webView.load(request)
Run Code Online (Sandbox Code Playgroud)
但我希望能够在用户从后台返回时在同一点启动视频,因此这不是一个可行的解决方案,因为当我备份打开应用程序时它只是加载空白页面。
我试图在页面加载之前将全局 JavaScript 函数注入到 Web 视图中。我有一个名为testJS我正在注入的函数。在我的 WebViewClient 中,我正在执行以下操作
private String getJS() {
return "javascript:function testJS() { return { test: 'Hello World' };}";
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.loadUrl(getJS());
}
Run Code Online (Sandbox Code Playgroud)
当我检查页面时,window.testJS未定义。
如果我执行以下操作,window.testJS网络视图中具有正确的功能,但它加载得不够早,因此无法正常工作。
@Override
public void onPageFinished(WebView view, String url) {
view.loadUrl(getJS());
}
Run Code Online (Sandbox Code Playgroud)
在 iOS 中,我可以通过注入脚本执行相同的操作atDocumentStart,并且它按照我期望的方式工作。
let userScript = WKUserScript(
source: scriptContent!,
injectionTime: WKUserScriptInjectionTime.atDocumentStart,
forMainFrameOnly: false)
contentController.addUserScript(userScript)
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以在 android WebView 中实现此目的?它适用于PageFinished,但不适用于PageStarted。