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. golang - 用IDE看docker源码时的小问题2. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?3. 关于docker下的nginx压力测试4. docker start -a dockername 老是卡住,什么情况?5. 请问一下各位老鸟 我一直在学习独孤九贱 现在是在tp5 今天发现 这个系列视频没有实战6. mysql问题请教7. 前端 - html5 audio不能播放8. python - 多线程小白求问这样的IP要怎么实现多线程print?9. redis与mysql一致性问题10. javascript - 在vuejs中如何根据变量去引用不同的css样式呢

网公网安备