Как анализировать данные из webView для использования в коде - PullRequest
0 голосов
/ 17 января 2019

У меня есть WKWebView в моем проекте, который выполняет некоторые операции, после нажатия кнопки отправки в WKWebView он отображает данные JSON в javaScript, которые мне нужно проанализировать в моем коде.

Ответы [ 4 ]

0 голосов
/ 04 июля 2019

Swift 5.1 примеры:

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        print("redirect didFinish")
        print(webView)
        webView.evaluateJavaScript("document.documentElement.outerHTML.toString()",
                                   completionHandler: { (html: Any?, error: Error?) in
                                    print(html as Any)
        })
    }
0 голосов
/ 17 января 2019

Вы можете получить исходный код вашей UIWebView страницы.

func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
    webView.evaluateJavaScript("document.getElementsByTagName('html')[0].innerHTML") { innerHTML, error in
        print(innerHTML!)
    }
}
0 голосов
/ 17 января 2019

ваш JSON входит в тег body, затем используйте этот код или измените его с веб-страницы, чтобы указать JSON в теге body

if let html = webView.stringByEvaluatingJavaScript(from: "document.body.innerHTML"){

            let data = html.data(using: .utf8)!
            do {
                if let jsonArray = try JSONSerialization.jsonObject(with: data, options : .allowFragments) as? Dictionary<String,Any>
                {
                    print(jsonArray) // use the json here
                } else {
                    print("bad json")
                }
            } catch let error as NSError {
                print(error)
            }
        }
0 голосов
/ 17 января 2019

Вы можете получить данные HTML в виде строки, используя этот фрагмент кода

в объективе C

NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"];

в Свифте

let yourWebView = UIWebView();
let html : String = yourWebView.stringByEvaluatingJavaScript(from: "document.body.innerHTML") ?? "";

Вы должны проанализировать, что вы получили, и сделать позже процесс соответственно.

В вашем случае вы можете получить полный JSON в строке.

...