gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:43:24 25 4
gpt4 key购买 nike

因此,我尝试通过将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com