gpt4 book ai didi

javascript - 使用带有 UIWebView 的 JavaScript 通过 ID-SWIFT 检索元素

转载 作者:行者123 更新时间:2023-11-28 10:56:10 24 4
gpt4 key购买 nike

我正在使用 UIWebView 加载作为文章的网页。按下按钮后,我将创建一个包含 urltitleimage 的结构。要访问标题,我需要访问网页的源代码并从每篇文章具有相同类 ID (class="c-page-title") 的 h1 header 中获取标题。谁知道如何使用 stringByEvaluatingJavaScriptevaluateJavaScript 函数从 h1 header 中获取文本?

这里是我的一些代码供引用:

结构:

struct Article {

var url: URL
var img: URL
var title: String

init(url: URL, img: URL, title: String) {
self.url = url
self.img = img
self.title = title
}
}

填充 Article 结构的函数:

    @IBAction func bookmarkArt(_ sender: Any) {

let articleInst = Article(url: (mainWebView.request?.url)!, img: (mainWebView.request?.url)!, title: "Article Here")
bookmarks.append(articleInst)
print("array: \(bookmarks)")

let alertController = UIAlertController(title: "Bookmark added!", message: "This article was just added to your bookmarks.", preferredStyle: UIAlertControllerStyle.alert)

// Replace UIAlertActionStyle.Default by UIAlertActionStyle.default
let okAction = UIAlertAction(title: "Awesome, thanks!", style: UIAlertActionStyle.default) {
(result : UIAlertAction) -> Void in
print("OK")
}

alertController.addAction(okAction)
self.present(alertController, animated: true, completion: nil)
}

任何帮助将不胜感激!!非常感谢。

干杯,西奥

最佳答案

确定可以使用 func stringByEvaluatingJavaScript(from script: String) -> String?

articleInst.title = webView.stringByEvaluatingJavaScript("document.getElementsByClassName(\"c-page-title\")[0].innerHtml;")

返回值将是类名为“c-page-title”的第一个元素内的html。

但是,我认为更好的方法是将您的 UIWebView 更改为 WKWebView .如果您从 iOS 代码在 webView 中运行大量脚本,这将使您的 javascript 性能得到提升。我还会将“c-page-title”从一个类更改为一个 ID,并确保页面上只有一个。然后你可以使用 func evaluateJavaScript(_ javaScriptString: String, completionHandler: ((Any?, Error?) -> Void)? = nil) 这在我看来要好得多。

所以它看起来像:

webView.evaluateJavaScript("document.getElementById(\"c-page-title\").innerHtml;") {(response, error) in 
if (response != nil) {
articleInst.title = response as! String
}
// error handling
}

另请记住,这是使用一个完整的处理程序,它是异步的,因此您需要为此构建您的逻辑。

关于javascript - 使用带有 UIWebView 的 JavaScript 通过 ID-SWIFT 检索元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43496335/

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