【发布时间】:2017-06-15 23:00:39
【问题描述】:
在 iOS 中,我打开网页时的默认行为是登录后会在新窗口中打开下一页。但是现在当我在 iOS webview 中打开它时,它并没有打开下一页。我用谷歌搜索了一下,原因似乎是弹出窗口阻止程序。那么,有没有什么简单的方法可以在 iOS webview 中禁用弹窗拦截器呢?
【问题讨论】:
在 iOS 中,我打开网页时的默认行为是登录后会在新窗口中打开下一页。但是现在当我在 iOS webview 中打开它时,它并没有打开下一页。我用谷歌搜索了一下,原因似乎是弹出窗口阻止程序。那么,有没有什么简单的方法可以在 iOS webview 中禁用弹窗拦截器呢?
【问题讨论】:
网页可能包含您未正确处理的重定向。
您可能首先想使用webView:didFailNavigation:withError: 或webView:didFailProvisionalNavigation:withError: 来获取一些原因或线索。您可以尝试调试webView:decidePolicyForNavigationAction:decisionHandler: 以查看您是否允许导航。
如果重定向在转换过程中以某种方式生成about:blank 页面,您可以尝试使用UIWebViewDelegate 的webView:shouldStartLoadWithRequest:navigationType:,如果request.URL.absoluteString 确实是about:blank,则返回YES,例如:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
if ([request.URL.absoluteString isEqualToString:@"about:blank"]) {
return YES;
}
return NO;
}
顺便说一句,您也可以尝试使用 Safari 在您的模拟器中调试 webViews。例如,在检查器中尝试document.location,以查看页面未打开时的实际 URL。
【讨论】: