【问题标题】:Evaluating JavaScript into WKWebView to fetch the Video URL doesn't work将 JavaScript 评估为 WKWebView 以获取视频 URL 不起作用
【发布时间】:2019-05-29 10:22:31
【问题描述】:

所以我试图通过将javascript评估为WKWebView来获取视频源URL。试图搜索许多不同的帖子,但没有一个能得到我想要的。我正在尝试从我在WKWebView 中打开的 Dailymotion.com 下载视频。现在在我的 WKWebView 的委托方法中,我正在传递 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 execution returned a result of an unsupported type" UserInfo={NSLocalizedDescription=JavaScript execution returned a result of an unsupported type}

【问题讨论】:

    标签: javascript ios swift url wkwebview


    【解决方案1】:

    Swift 无法解释 javascript 对象 - 在这种情况下,您将返回带有标签“video”的元素对象数组。

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多