iOS开发实战小知识点(五)——获取JS meta异常

在开发中遇见一个问题:

获取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]就都能返回正常了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 前言 Web 页面中的 JS 与 iOS Native 如何交互是每个 iOS 猿必须掌握的技能。而说到 Nati...
    幽城88阅读 2,334评论 1 8
  • 跟原生开发相比,H5的开发相对来一个成熟的框架和团队来讲在开发速度和开发效率上有着比原生很大的优势,至少不用等待审...
    大冲哥阅读 1,903评论 0 7
  • 随着H5技术的兴起,在iOS开发过程中,难免会遇到原生应用需要和H5页面交互的问题。其中会涉及方法调用及参数传值等...
    Chris_js阅读 3,243评论 1 8
  • 17.4美国传统融资占全球比例,超过60%, 2017年11月份ico融资,快速超越传统模式, 2017年全年,比...
    许中阳阅读 355评论 0 0
  • 2017年5月15日 星期一 雨 读经汇报:《易经》《大学》《唐诗三百首》《庄子》《新概念英语》。
    Q儿阅读 175评论 0 0

友情链接更多精彩内容