javascript - WKWebView evaluateJavaScript 不适用于 youtube 嵌入式视频网址

标签 javascript ios swift youtube wkwebview

我已经将一个 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/

相关文章:

ios - UICollectionView 的动态单元格宽度取决于标签宽度

ios - 将 swift 连接到 FirebaseDatabase

ios - 快速将 UIVisualEffectView 添加到 tableView

javascript - 语义 UI React : How to Hide Suggested Text from Search Box

javascript - 如何忽略删除关键字?

ios - UICollectionViewFlowLayout,UICollectionView : changing screen orientation breaks cells arrangement

ios - 如何使用 UITouch 检测圆形水龙头?

ios - 从 Swift 中的字典数组返回特定​​字典

javascript - 在悬停时替换元素的文本 jQuery JS

javascript - 检测 video.load 是否成功 - javascript