objective-c - iOS 开发中 WKWebView 的使用问题拦截跳转
问题描述
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler { 请问这里的 webView.URL 和 navigationAction.request.URL 有什么区别? }- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler {请问这里的 webView.URL 和 navigationAction.request.URL 有什么区别?}
问题:1.上面代码块里面的问题 webView.URL 和 navigationAction.request.URL 有什么区别?2.当我第一次加载一个网页的时候,上面的代理方法为什么会被调用多次?3.如果我想拦截网页的跳转链接,希望通过 push 打开一个页面重新展示一个 webview,最好是在哪个代理方法里拦截? 遇到重定向问题怎么破?
问题解答
回答1:调多次 是不是因为url有重定向
回答2:你可以打印出来看看他们的值,看看跳转网页的时候是在哪里打印的。文档里有关于这两个代理的说明。
/*! @abstract Decides whether to allow or cancel a navigation. @param webView The web view invoking the delegate method. @param navigationAction Descriptive information about the action triggering the navigation request. @param decisionHandler The decision handler to call to allow or cancel the navigation. The argument is one of the constants of the enumerated type WKNavigationActionPolicy. @discussion If you do not implement this method, the web view will load the request or, if appropriate, forward it to another application. */- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler;/*! @abstract Decides whether to allow or cancel a navigation after its response is known. @param webView The web view invoking the delegate method. @param navigationResponse Descriptive information about the navigation response. @param decisionHandler The decision handler to call to allow or cancel the navigation. The argument is one of the constants of the enumerated type WKNavigationResponsePolicy. @discussion If you do not implement this method, the web view will allow the response, if the web view can show it. */- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler;
相关文章:
1. javascript - 新组成的数组打印出来出现问题,里面有对象,但长度为空2. docker网络端口映射,没有方便点的操作方法么?3. docker绑定了nginx端口 外部访问不到4. Docker for Mac 创建的dnsmasq容器连不上/不工作的问题5. macos - mac下docker如何设置代理6. angular.js - angular内容过长展开收起效果7. dockerfile - 为什么docker容器启动不了?8. docker - 各位电脑上有多少个容器啊?容器一多,自己都搞混了,咋办呢?9. angular.js使用$resource服务把数据存入mongodb的问题。10. docker-compose 为何找不到配置文件?

网公网安备