gpt4 book ai didi

javascript - 从 UIWebView Swift iOS 获取元素

转载 作者:行者123 更新时间:2023-11-28 06:50:31 26 4
gpt4 key购买 nike

我通过以下方式获取网页的 URL:

print(webView.request?.mainDocumentURL)

我想知道如何从 UIWebView 中获取元素,例如路径和 ID(下面附有图片)我尝试使用以下方法提取它:

let html = webView.stringByEvaluatingJavaScriptFromString("document.getElementsByName('json')")

虽然它不起作用。

Screenshot of web page Inspect Element of web page

最佳答案

我得到的响应是 JSON(有问题的图片),使用 shouldStartLoadWithRequest UIWebView 委托(delegate)并使其识别回调 url 并提取数据,然后将其转换为字典。'prefs' 是 NSUserDefaults,你可以忽略。

    func convertStringToDictionary(text: String) -> [String:AnyObject]? {
if let data = text.dataUsingEncoding(NSUTF8StringEncoding) {
do {
return try NSJSONSerialization.JSONObjectWithData(data, options: []) as? [String:AnyObject]
} catch let error as NSError {
print(error)
}
}
return nil
}


func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {

let fullNameArr = request.URL!.absoluteString.characters.split{$0 == "?"}.map(String.init)
let callbackUrl = fullNameArr[0];
if callbackUrl == "http://xxxxxxxxxxx:2403/auth/google/callback" {

webView.stopLoading();
let url = NSURL(string: request.URL!.absoluteString)
let task = NSURLSession.sharedSession().dataTaskWithURL(url!) {(data, response, error) in

let datastring = NSString(data: data!, encoding: NSUTF8StringEncoding)
let responsedata = self.convertStringToDictionary(datastring as! String);

let userId = responsedata!["uid"]! as! String
let sessionId = responsedata!["id"]! as! String

if(sessionId != "") {

prefs.setObject(userId, forKey: "USERNAME")
prefs.setObject(sessionId, forKey: "SESSIONID")
prefs.setInteger(1, forKey: "ISLOGGEDIN")
prefs.synchronize()

self.dismissViewControllerAnimated(true, completion: nil)

} else {

dispatch_async(dispatch_get_main_queue(), {

let alertController = UIAlertController(title: "Sign in Failed!", message: "Failed to retrieve data", preferredStyle: .Alert)
let OKAction = UIAlertAction(title: "OK", style: .Default) { (action) in }
alertController.addAction(OKAction)
self.presentViewController(alertController, animated: true) { }
})
}

dispatch_async(dispatch_get_main_queue(), {
self.webView.removeFromSuperview()
self.navigationBar.removeFromSuperview()
})
}
task.resume()
}
return true
}

关于javascript - 从 UIWebView Swift iOS 获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35055388/

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