iOS开发实战小知识点(五)——获取JS meta异常
2017-10-23 本文已影响15人
Eddiegooo
在开发中遇见一个问题:
获取H5某个meta的值,在iOS 10(包括)系统以上可以正常获取,但是在iOS 10系统以下获取meta值返回为nil。
代码如下:
NSString *js = [NSString stringWithFormat:@"document.getElementsByTagName('meta')['%@']['content']",metaName];
NSString *meta = [webView stringByEvaluatingJavaScriptFromString:js];
这时候返回值在iOS 10系统以上正常,iOS 10系统以下得到neta值为nil。js是可以获取到的,但是调用stringByEvaluatingJavaScriptFromString
方法后返回值为nil。
上网查了很多问题,查找的都是stringByEvaluatingJavaScriptFromString
在iOS 10一下系统为什么会返回nil。网上说要用JSContext,或者用WKWebVIew获取JS meta的。但是我们项目只用了UIWebVIew。只能试试JSContext,测试也不行,但是这时候把获取JS meta字符串方法换了,竟然可以获取到了。
document.getElementsByTagName("input"),结果为获取所有标签为input的元素。
document.getElementsByName("hobby"),结果为获取属性name="hobby"的元素。
解决办法:更改获取JS meta的方法:
NSString *js = [NSString stringWithFormat:@"document.getElementsByName(\"%@\")[0].content",metaName];
在调用[webView stringByEvaluatingJavaScriptFromString:js]
就都能返回正常了。