gpt4 book ai didi

javascript - 如何将值从 JavaScript 传递给 Swift

转载 作者:行者123 更新时间:2023-11-28 05:44:50 25 4
gpt4 key购买 nike

这是我用来尝试将网站 html 中项目的长度快速获取到变量的代码,这样我就可以根据类的长度运行一个函数

self.viewController?.webBrowser?.evaluateJavaScript("document.getElementsByClassName('siteName').length") { (value, error) in
print("LENGTH IS ", value)
print("ERROR IS ", error)
let jsValue = value as? Int

if jsValue == 0{
self.waitClick()
}else{
self.startItemColor()
}
}

无论长度是多少,我都会得到0作为值

最佳答案

当您尝试访问它时,DOM 元素 可能尚未就绪。您应该移动您的代码到WKNavigationDelegate 协议(protocol)的didFinish 方法。

所以你的 UIViewController 应该是这样的:

class ViewController: UIViewController, WKNavigationDelegate {

override func viewDidLoad(){
super.viewDidLoad()

...
webBrowser.navigationDelegate = self
webBrowser.load(request)
...
}

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
webView.evaluateJavaScript("document.getElementsByClassName('siteName').length") { (value, error) in
print("LENGTH IS ", value)
print("ERROR IS ", error)
let jsValue = value as? Int

if jsValue == 0{
self.waitClick()
} else {
self.startItemColor()
}
}
}

}

另外不要忘记像这样在您的 info.plist 中启用 App Transport Security

<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>

如果这不起作用,请尝试调试原因。可能尝试在您的 JavaScript 中调用一个方法,该方法返回 class="sitename" 元素的长度以及 console.log(length) 以便您可以更进一步调试并查看发生了什么。

关于javascript - 如何将值从 JavaScript 传递给 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55192130/

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