我已经将一个 youtube 嵌入式视频加载到 WKWebView: https://www.youtube.com/embed/amtuB-2wGeQ?playsinline=1&autoplay=1
然后在 WKWebView didFinishNavigation 事件被触发后,我调用:
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.querySelector('video').play()", completionHandler: { (result, error) in
if let r = result {
print(r)
}
if let e = error {
print(e)
}
})
}
但是javascript命令没有执行,error和result都是nil。
当我在 Chrome 开发者工具中执行相同的 javascript 命令时,它成功播放了视频并通过调用“play()”和“pause()”暂停了视频。
document.querySelector('video').play()
document.querySelector('video').pause()
我不知道 WKWebView 内部发生了什么,有什么想法吗? 谢谢!
最佳答案
好的,终于弄明白为什么它不起作用了。
如果您还在为“为什么我的 javascript 在 WKWebView 中不工作”而苦苦挣扎,下面是找出原因的一种巧妙方法:
<强>1。在桌面上打开 Safari,首选项 -> 高级,启用“在菜单栏中显示开发者菜单”
<强>2。在 Safari 菜单中,Develop -> simulator,连接你的 iPhone 模拟器
<强>3。现在你可以在Safari中看到网页html和脚本了,在控制台输入区,尝试运行不同的javascript,看看哪个有效。
<强>4。然后调用从“evaluateJavaScript”运行的那个
它在我的案例中不起作用的原因是嵌入式网页在普通网络浏览器和 WKWebView 之间呈现不同。我以浏览器脚本为例,但它不起作用。
在 Safari 调试器的帮助下,您可以看到 WKWebView 内部到底发生了什么,这真的很酷。
如果您遇到同样的问题,希望对您有所帮助。 谢谢!
关于javascript - WKWebView evaluateJavaScript 不适用于 youtube 嵌入式视频网址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43288339/