OC删除网页中的指定的元素
需求
 既上次成功删除网页元素后,成功得将有赞”变成”我们app的一部分之后,最近老大又提了新的需求,将书单来了继续”变成”我们的一部分,需求来了,问题也就来了 
问题一 删除选中的图片

 不同于上次的是,这次需要删除的元素是在body里面更加里面的层级关系,而且没有关键字,无法查询到;通过开发者工具我们可以看到,这是一个p标签里面的内容,而且他把信息写在了img里面 
解决办法
根据className查询到数组,然后取孩子的下标来删除
 如图 

 代码 
1 2 3 4 5 6 7 8 9 10 11 12 
  | - (void)webViewDidFinishLoad:(UIWebView *)webView{ 	     NSMutableString *stringM = [NSMutableString string];                 [stringM appendString:@"var headerImg = document.getElementsByClassName('rich_media_content ')[0].children[0];headerImg.parentNode.removeChild(headerImg);"];          [webView stringByEvaluatingJavaScriptFromString:stringM];      } 
  | 
 
问题二 删除选中的二维码和指纹
 这种情况是当整个页面某一个class的内容过多(孩子过多),例如当前的页面所有的内容都是一张图片的里面的子图片,子文字,如果一个一个数,恐怕会累死 

解决办法
通过query方法查询
 如图 

 代码 
1 2 3 4 5 6 7 8 9 10 11 12 
  | - (void)webViewDidFinishLoad:(UIWebView *)webView{ 	     NSMutableString *stringM = [NSMutableString string];                  [stringM appendString:@"var sss = document.querySelector('section[donone]');sss.parentNode.removeChild(sss);"];          [webView stringByEvaluatingJavaScriptFromString:stringM];      } 
  | 
 
问题三  改变当前页面的文字
 当把所有有关于”书单来了”的信息删除以后,还有一个问题就是标题名”书单来了|这7本书,是文学大师的冷门佳作”,要是可以把”书单来了”删除就好了 

解决办法
通过innerHTML来改变内容
遇到的小问题:
 document.getElementById(‘activity-name’).innerHTML = “这7本书,是文学大师的冷门佳作”;这句话在console里面直接执行就可以实现效果,但是写在OC代码里面是不执行的,后来google下才发现,在OC代码中写法有误 


 代码 
1 2 3 4 5 6 7 8 9 10 11 
  | - (void)webViewDidFinishLoad:(UIWebView *)webView{ 	     NSMutableString *stringM = [NSMutableString string];             [stringM appendString:@"document.getElementById('activity-name').innerHTML = '这7本书,是文学大师的冷门佳作';"];          [webView stringByEvaluatingJavaScriptFromString:stringM];      } 
  | 
 
 这样我们基本上就可以完成大部分的需求了,书单来了也成功得变成了我们app的一部分.