我想在WKWebView中加载页面,然后禁用其中的链接 . 大多数链接都是相对的 .
尝试使用 webView:decidePolicyForNavigationAction:decisionHandler:
,但如果我使用 navigationAction.request.URL
,则会在's called and relative links don' t之前加载新页面 . 也尝试使用 UIDelegate
,并且根本没有加载 .
有任何想法吗? Obj C是可以忍受的,但Swift也可以 .
编辑:
好的,我会稍微改一下这个问题 .
当用户按下链接时,我想停止WKWebView打开它,而是将该链接保存到数组 . 如果满足某些条件,可以使用loadrequest手动打开它 .
代码很简单
- (void)viewDidLoad {
[super viewDidLoad];
NSString *sURL = @"https://www.mytestingwebsite.com";
NSURL *URL = [NSURL URLWithString:sURL];
WKWebViewConfiguration *theConfiguration = [[WKWebViewConfiguration alloc] init];
[self addUserScriptsToUserContentController:theConfiguration.userContentController];
WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:theConfiguration];
webView.navigationDelegate = self;
webView.UIDelegate = self;
//webView.allowsLinkPreview = TRUE;
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:URL];
[webView loadRequest:nsrequest];
[self.view addSubview:webView];
}
他们在WWDC 2014中使用了视频206 NSURL *selectedURL = navigationAction.request.URL;
来检测和禁用外部链接 . 但显然没有添加NSLog和断点来测试它 .
3 回答
由于我无法想出更聪明的东西,我用javascript做了 .
基本上,您加载js文件,查找容器和链接,并为所需的链接设置
href="javascript:(void)"
.尝试: