美文网首页iOS开发经验总结UIWebView和JS交互iOS 开发整理
iOS浅谈webView的JS一种用法.(去掉web显示页的广告

iOS浅谈webView的JS一种用法.(去掉web显示页的广告

作者: 神经骚栋 | 来源:发表于2016-01-12 23:22 被阅读3613次

    你觉得累吗? 累就对了,因为舒服是给死人准备的 ..

    今天遇到了webView 中网页显示的问题,大家都知道webView的强大之处,因为webView根据url(统一资源定位符)不但可以显示本地的资源,而且还可以显示网络上的一些数据,大大减少了我们代码量,只要看好了一个网页我们直接拿来了用就行,但是往往这些网页中有一些是我们所不需要的东西.比如广告了,一些链接啦,大大降低了我们的应用程序的美观.如下图

    下载链接 ,分享都不是我们所需要的

    对于这样的问题,像我这小菜鸟真是脑洞再大也解决不了,幸得大神帮助,给我推荐一篇的博客.成功的解决了问题.

    ----> 点击此处进入原文博客

    根据大牛的思路,总共分这么几步

    1.使用工具获取到你想要获取到页面上的控件(ccs操作???不懂...)

    选择谷歌浏览器,打开开发者工具

    2.打开开发者工具 ,我们用到的地方如下图

    需要用到的地方
    Device:你要选择在那种情境下显示网页,通俗来说,就是模拟器
    放大镜:你可以通过放大镜对网页上的控件进行选取,然后找到html代码.(重要的第一步呀)
    手机:转化为手机模式,但是前提必须要转换Device的模式,要不然,光是视图上的转变,没有实际的转变(注意:我现在拿手机的网页做示例,所有我需要转化,当你做的电脑的就不需要转换这些了)

    3.查找到我们所需要的控件(JS操作)

    3.1点击放大镜,这样我们就可以对网页上的控件进行选取了;

    放大镜

    3.2选取你要取消网页上的控件(单击就行),这时候你就会发现html代码有一部分被选中(右下边可以直接被编辑)


    三部曲

    3.3我们在右下边可以直接填上下面这行代码,直接完成广告的去除,但这不是我们要的效果,我们要的效果是通过OC来去除广告,心急吃不了热豆腐,请执行下面代码

    display:none (这行代码这右下边的编辑区任意地方写就行 如图)

    看看我们代码写在哪!



    3.4上面就是给你个希望而已,不要激动,精彩的在后面,我们看到了取出效果之后,我们就要找到class内的字符串,这里我们就要'g-mnc1'就行.

    取出我们所需要的东西

    紧接着打开控制台Console 输入如下代码 回车

    document.getElementsByClassName('这里写你要消除的空间的class里面的字符串')

    如图所示

    输入代码

    紧接着打开数组中的第一个元素 输入如下代码 回车

    document.getElementsByClassName('这里写你要消除的空间的class里面的字符串')[0]

    如图所示

    获取第一个元素

    又接着,我是真够了又接着了...重复呀!!够够的了.(这才是我们最终所需要的!!!注意啦)

    document.getElementsByClassName('这里写你要消除的空间的class里面的字符串')[0].style.display = 'none'

    效果图

    4.验证完成之后,我们就需要对我们的UIwebView进行操作了,这里我就直接引用大牛的文章了(iOS操作)(这两天身体不适,改天再写了,抱歉了)

    1.创建UIWebView
    2.设置代理
    3.加载网络请求

    注意:顺序问题很重要,不懂的直接当CV战士吧,尽情的复制黏贴吧,吼吼

    //创建webview
    self.webview = [[UIWebView alloc] initWithFrame:self.view.frame];
    [self.view addSubview:_webview];
    //设置代理
    self.webview.delegate = self;
    //发送请求
    [_webview loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://m.haodou.com/topic-327282.html?id=327282"]]];
    
    

    我们可以通过webView的代理方法进行我们 JS操作(如下) 方法:
    - (void)webViewDidFinishLoad:(UIWebView *)webView

    
    #pragma mark - UIWebViewDelegate
    - (void)webViewDidFinishLoad:(UIWebView *)webView{
        [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.getElementsByClassName('adpic')[0].style.display = 'none'"];
    }
    
    

    然后我们所需要的效果就出来了;新鲜的,来两口 .屏蔽webView中的广告完成.

    总结:document.documentElement.getElementsByClassName('这里写你要消除的空间的class里面的字符串')[0].style.display = 'none' 是我们今天的重点

    最后感谢大牛的博客

    ----> 点击此处进入原文博客

    有钱的点个喜欢,不要钱了,没钱的也来也喜欢了 谢谢大家了,呜呜....

    相关文章

      网友评论

      • 不说谎的匹诺曹Y:大神, 那如果那不是class类型, 他是id类型, 怎么办
      • 超_iOS:关键我的链接是本地链接.浏览器根本无法访问...
        神经骚栋:@_超 联系QQ.676758285
      • VeryView:我想知道,怎么通过点击或者长按获取wkwebview上某一个控件的class呢,请大神赐教:pray: :pray: :pray:
        神经骚栋:@VeryView 我写过一个使用jscore 框架实现两者的交互,是我的一个文集,你可以看看:smile::smile::smile:
      • 欲知天下事:写的不错,干活
        神经骚栋:@欲知天下事 :joy::joy::joy:
      • 一夜暴富两夜也行:不错哦,之前写过一段时间页面,刚好看这个不太费力 :smirk:
      • 左边飞来一只狗:这个不是在服务器端么 你在本地页面删除 应该没用吧
        神经骚栋:@左边飞来一只狗 是有用的 请测试 虽然实际上并没有删除服务器上的H5元素,但实际上用户看到本地的webView是去除对应H5模块的.当然了 一些细节问题需要自己注意.
      • CathyCherry:为什么在网页中明明删掉了,在xcode中确删不掉。大牛,该怎么弄
        神经骚栋: @CathyCherry 嗯,因为web页面中是存在属性和对象的,我们只能使用这个方法删除对象,删除属性要另寻方法…同时可能web页面中的一个对象在不同的位置都有引用,你只删除一个地方是删除失败的…😬😬😬
        CathyCherry:@神经骚栋 我显示的是手机的web页面,我删掉的东西很多,就是有的东西可以在xcode中去掉,有的就是我之前说的去不掉
        神经骚栋: @CathyCherry 首先你要确定你显示的是手机的web页面还是电脑的web页面,再就是看看是否调用出错
      • 2e3faf145fc6:这个方法会先显示广告一段时间再消失,实际上用户体验并不好~
        神经骚栋: @玖城 这就是呀……
        2e3faf145fc6:@神经骚栋 怎么弄?能写篇文章分享一下吗?不胜感激
        神经骚栋: @玖城 @玖城 是的,但是我现在已经准备好了改进方案了😁😁😁
      • 喝杯开水压压惊:淘宝的页面 怎么去?
      • bde04638cca8:有的网站他的元素里面有head footer也好讨厌怎么去掉啊
      • 学习学习休息下:HTMLCollection [ ]我的数组是一个伪数组, 怎么样修改
      • 8ae158dda3f2:mark -
        神经骚栋:@_NevinZ 额……大牛,你想说啥……

      本文标题:iOS浅谈webView的JS一种用法.(去掉web显示页的广告

      本文链接:https://www.haomeiwen.com/subject/mbkckttx.html