我的项目中有一个WKWebView
,它会执行一些操作,在单击WKWebView
中的Submit之后,它将在javaScript中显示我需要解析代码的JSON数据。
答案 0 :(得分:0)
您可以使用这段代码以字符串形式获取HTML数据
在目标C中
google.charts.load('current', {
packages: ['corechart']
}).then(function () {
var options = {
height: 350,
legend: {
position: 'bottom'
},
hAxis: {
title: 'Years'
},
vAxis: {
title: 'Property Value'
},
backgroundColor: '#f1f8e9'
};
var chart = new google.visualization.LineChart(document.getElementById('chart_div'));
$.ajax({
url: url,
headers: {
'X-CSRF-TOKEN': '{{csrf_token()}}'
},
type: "POST",
data: {
'annual_capital_growth':annual_capital_growth,
'property': property,
'forcast_period': forcast_period,
},
context: this
}).done(function (response, status, jqXHR) {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Years');
data.addColumn('number', 'Property Name');
data.addColumn('number', 'Compute Times');
data.addColumn('number', 'Compute Times2');
data.addRows(response.graphArray);
function resize() {
chart.draw(data, options);
}
resize();
$(window).resize(resize);
}).fail(function (jqXHR, status, errorThrown) {
console.log(errorThrown);
});
});
在Swift中
NSString *html = [yourWebView stringByEvaluatingJavaScriptFromString: @"document.body.innerHTML"];
您必须分析所收到的信息,然后进行相应的处理。
在您的情况下,您可能会在字符串中获取完整的json。
答案 1 :(得分:0)
您可以获取UIWebView
页面的源代码。
func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) {
webView.evaluateJavaScript("document.getElementsByTagName('html')[0].innerHTML") { innerHTML, error in
print(innerHTML!)
}
}
答案 2 :(得分:0)
您的JSON出现在body标签中,然后使用此代码或从网络侧更改以在body标签中提供JSON
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)
}
}
答案 3 :(得分:0)
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)
})
}