iOS 基于WebView浏览器的高级开发 (一)

1.如何在地址栏显示正确的地址

问题与概括:

在开发浏览器中,要有一个地址栏,经过测试可知,现在的html5网站,经常加载其他网址的控件或者内容,所以只获得正在加载的网址不能实现地址栏只显示当前网页网址的问题。但在开始加载前进行判断就能完成大部分不正确网址的过滤。

解决原理:

在webviewDelegate有四个方法

1<span style="font-weight: normal;">- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType; 2//网页开始读取之前对网址进行判断的方法 3- (void)webViewDidStartLoad:(UIWebView *)webView; 4//网页正式开始读取的方法 5- (void)webViewDidFinishLoad:(UIWebView *)webView; 6//网页读取结束的方法 7- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error; 8//网页读取错误的方法</span>

在以上的方法中,只要获得了webview.request.URL.absoluteString,就可以得到网页正在加载的地址。

但会有很多未知的网址会出现在这个string中,例如

  1. about:blank(经常出现空网页)
  2. open.baidu.com./....(加载百度开源代码)
  3. search.tudou.weight/....(加载网站控件)

所以要在地址栏中要进行判断,是否是当前读取的主网址,然后截取该地址

实现方法:

1- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 2 NSString *urlStr = request.URL.absoluteString; 3 if (([urlStr hasPrefix:@"http://www"])||([urlStr hasPrefix:@"http://m."])||([urlStr hasPrefix:@"http://v."])){ 4 _searchURLView.inputView.text = urlStr; 5 } 6 return YES; 7}

判断的解析规则可以继续添加,也可以使用正则匹配,这里只讲可行的实现方法,具体扩展或者有其他好的方法,希望大家能继续共享。

----今天暂时写到这里


点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )