美文网首页iOS开发iOS开发实用技术iOS编程
iOS-OC中加载html5调用html方法和修改HTML5内容

iOS-OC中加载html5调用html方法和修改HTML5内容

作者: 船长_ | 来源:发表于2015-11-11 22:17 被阅读23459次
    • 1.利用webView控件加载本地html5或者网络上html5
    • 2.设置控制器为webView的代理,遵守协议
    • 3.实现代理方法webViewDidFinishLoad:
    • 4.在代理方法中进行操作HTML5中的标签(CRUD-->增删改查)
      • 1.用类选择器或者id选择器或者标签选择器等选择要进行操作的标签
      • 2.把选择好的标签转换成字符串
      • 3.webView调用stringByEvaluatingJavaScriptFromString方法
    • 应用场景:比如加载了网络上的百度链接,但是不想要它某个链接标签,利用这个代理方法,获取这个标签,然后删除它,或者更改他标签的显示文字等内容

    1.加载本地HTML5

    NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"html"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
    

    2.加载网络上网页HTML5

    NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];
    

    3.在oc中删除HTML5中的某个标签,比如按钮

    // 网页视图加载完毕会调用代理的这个方法
    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        NSString *str = @"document.getElementsByClassName('detail_btns2')[0].remove();";
        [webView stringByEvaluatingJavaScriptFromString:str];
    }
    

    4.在oc中更改HTML5内容

    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
       NSString *headerStr = @"document.getElementsByTagName('h1')[0].innerText = '测试文字';";
       [webView stringByEvaluatingJavaScriptFromString:headerStr];
    
       NSString *downLoadStr = @"document.getElementById('xiazaiapp').getElementsByTagName('a')[0].innerText = '下个鸡蛋';";
       [webView stringByEvaluatingJavaScriptFromString:downLoadStr];
    }
    

    相关文章

      网友评论

      • 凡尘一笑:哥们在不,加个QQ私聊一下 有个问题想向你请教
        船长_:@凡尘一笑 863223764
      • huixiansheng:我加载的是本地的HTML文件,但是在WebView的代理中执行了元素修改的动作,webView上没有改变?求大神给个出路:pray:
        huixiansheng:@船长_ 嗯,可以啦!笨脑子把元素拿错了。另外再问一下船长,这个怎么用正则进行替换呢?
        船长_:@huixiansheng 断点看有没有走代理方法,标签元素有没有拿正确
      • Damon4Zhou:可以向html取一些数据吗?
        船长_:@Damon4Zhou 可以获取标签的字段,现在一般不用webview.用wkwebview
      • LD_左岸:如果一个div标签 既有id 又有class怎么删除呢 比如<div id="share-tip" class="share-tip">
        LD_左岸:大牛啊 还有一种情况 就是我的div标签 后面的class不是唯一的 后面还有一个data-id 这个data-id是依次递增的 如 H5文件中好多这样的div标签 <div class="item-info" data-id="608">
        ::before下面就是别的标签了 我现在想把这种div标签全部删除怎么删呢
        LD_左岸:@船长_ 感谢 解决了 确实是这样的额
        船长_:只要这个标签是唯一的,用id或者class都行
      • 管家頗:修改不了百度页面啊
      • 若雨千寻:怎么才能取到h5页面标签的值呢?比如一个h5按钮上的文字,或者一个inputview里的值 :smile:
        d2726e8ce834:@若雨千寻 我用的是第三方TFHpple
      • 芝麻绿豆:我们公司的iOS项目现在基本都是h5了!感觉自己要失业了:joy:
        船长_:@芝麻绿豆 那就赶紧转h5,多么好的机会
      • 54番茄:尝试修改百度 好像不可以啊
      • 两好三坏:出现乱码吗?
      • 3a65b282a89a:这样是不是可以在本地写一些Html的模板,然后从网上获取json数据,根据不同json类容使用不同模板,并且能加快网络反应速度?
        小小土豆dev:可以把html模板加入本地,从服务器获取json数据,然后通过调用html里的JS方法,把json数据传给html.
        Code_zhou:这个问题你证实了吗?我现在就是这个需求,正在找方法。(我们是新闻详情页,模板一样,内容活动)

      本文标题:iOS-OC中加载html5调用html方法和修改HTML5内容

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