diff --git a/KINWebBrowser/KINWebBrowserViewController.h b/KINWebBrowser/KINWebBrowserViewController.h index 64a5087..4db8bf1 100644 --- a/KINWebBrowser/KINWebBrowserViewController.h +++ b/KINWebBrowser/KINWebBrowserViewController.h @@ -51,6 +51,7 @@ @protocol KINWebBrowserDelegate @optional +- (BOOL)webBrowser:(KINWebBrowserViewController *)webBrowser shouldStartLoadingURL:(NSURL *)URL; - (void)webBrowser:(KINWebBrowserViewController *)webBrowser didStartLoadingURL:(NSURL *)URL; - (void)webBrowser:(KINWebBrowserViewController *)webBrowser didFinishLoadingURL:(NSURL *)URL; - (void)webBrowser:(KINWebBrowserViewController *)webBrowser didFailToLoadURL:(NSURL *)URL error:(NSError *)error; diff --git a/KINWebBrowser/KINWebBrowserViewController.m b/KINWebBrowser/KINWebBrowserViewController.m index 253cd25..e31a99d 100644 --- a/KINWebBrowser/KINWebBrowserViewController.m +++ b/KINWebBrowser/KINWebBrowserViewController.m @@ -226,6 +226,12 @@ - (void)setActionButtonHidden:(BOOL)actionButtonHidden { - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { if(webView == self.uiWebView) { + if([self.delegate respondsToSelector:@selector(webBrowser:shouldStartLoadingURL:)]) { + if(![self.delegate webBrowser:self shouldStartLoadingURL:request.URL]) { + return NO; + } + } + if(![self externalAppRequiredToOpenURL:request.URL]) { self.uiWebViewCurrentURL = request.URL; self.uiWebViewIsLoading = YES; @@ -319,6 +325,14 @@ - (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigati if(webView == self.wkWebView) { NSURL *URL = navigationAction.request.URL; + + if([self.delegate respondsToSelector:@selector(webBrowser:shouldStartLoadingURL:)]) { + if(![self.delegate webBrowser:self shouldStartLoadingURL:URL]) { + decisionHandler(WKNavigationActionPolicyCancel); + return; + } + } + if(![self externalAppRequiredToOpenURL:URL]) { if(!navigationAction.targetFrame) { [self loadURL:URL];