WKWebView代理回调中的导航策略普及
WKWebview出来之后,很多人都欢快的用上了,也包括本人在内,但是今天用的时候,发现在加载的网页上面进行二次跳转网页之后,内存会涨的很快,多点两个跑起来就快内存警告了,想了一次,还是调系统的Safari跳转比较妥当,但是怎么获取网页上这个按钮点击的事件呢,这个按钮本身就绑定了一个url,怎么让它点击之后当前的UIWebView不去load这个url呢。
几经查询之后,发现UIWebView的协议里面有这么个方法,可以获取它加载的网页上面的事件,比如单击了图片,单击了按钮等等。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
// 这里需要return一个值,决定是否跳转本次加载的页面
}
这里有个UIWebViewNavigationType的枚举,分别为这几项
UIWebViewNavigationTypeLinkClicked,用户触击了一个链接。
UIWebViewNavigationTypeFormSubmitted,用户提交了一个表单。
UIWebViewNavigationTypeBackForward,用户触击前进或返回按钮。
UIWebViewNavigationTypeReload,用户触击重新加载的按钮。
UIWebViewNavigationTypeFormResubmitted,用户重复提交表单
UIWebViewNavigationTypeOther,发生其它行为。
最后处理:
回调方法处理注意:最后一点要返回YES,否则UIWebView刚开始将一片空白,这是因为第一次加载的时候也是UIWebView请求一个链接,如果返回NO,就不会去加载了。还可以对url的内容进行判断,看是什么请求。