javascript - 将 JavaScript 评估到 WKWebView 中以获取视频 URL 不起作用

标签 javascript ios swift url wkwebview

因此,我尝试通过将 javascript 评估为 WKWebView 来获取视频源 URL。尝试搜索许多不同的帖子,但没有一个得到我想要的。我正在尝试从 Dailymotion.com 下载视频,该视频已在我的 WKWebView 中打开。现在,在 WKWebView 的委托(delegate)方法中,我传递 Webview 的当前 URL 来评估 JavaScript,以便获取视频 URL。




    func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!)
    {
        print("wkwebview")
    }

    func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error)
    {
        print("wkwebview")
    }

    func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
        //print("wkwebview")
        //print(navigationAction.request.url?.absoluteString as Any)


        webView.evaluateJavaScript("document.getElementsByTagName('video')")
        {
            (result, error) in
            guard error == nil else
            {
                print(error!)
                return
            }
             print(String(describing: result))
        }



       //loadURL(site: (webView.url?.absoluteString)!)

        decisionHandler(.allow)
    }


我收到的错误是Error Domain=WKErrorDomain Code=5“JavaScript执行返回了不支持类型的结果”UserInfo={NSLocalizedDescription=JavaScript执行返回了不支持类型的结果}

最佳答案

Swift 无法解释 javascript 对象 - 在本例中,您将返回带有“video”标签的元素对象数组。

但是,Swift 可以很好地接收字符串值。假设您的视频元素将 url 作为“src”属性,您只需使用 document.getElementsByTagName('video')[0].getAttribute('src') 代替当前的 JS 调用获取字符串形式的源 url。

.getElementsByTagName 返回一个数组。如果您有多个视频元素,则需要获取正确的索引,或者只获取第一个(就像我上面所做的那样)。

或者: document.getElementsByTagName('video')[0].src

关于javascript - 将 JavaScript 评估到 WKWebView 中以获取视频 URL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56358312/

相关文章:

javascript - 当输入文本中写入内容时,如何通过 jquery 启用 jsf 中的命令按钮

ios - 从 Firebase 数据库中获取特定字段

ios - UIImageView 在启动屏幕上是黑色的

ios - 如何从测试目标下的生产代码获取测试目标包 Plist 文件?

javascript - 将 json 数据转换为强类型 View

javascript - 使用 jquery 更改部分 src 名称,在调整窗口大小时不断重复

javascript - 提取并调用元素的 onclick HTML 属性中定义的 JavaScript 函数(使用 jQuery attr/prop)

ios - 当应用程序处于后台时,在内存中保留一个 Firebase 监听器

swift - 如何在 MapKit 中制作长按事件

ios - 火力地堡和 swift : How to use another database for storing larger files?