您可以檢測和攔截window.open
調用通過重寫頁面加載後的JavaScript函數:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[webView stringByEvaluatingJavaScriptFromString:@"window.open = function(url) { window.location.href = 'open-' + url; return window; };"];
}
當有人敲擊該鏈接,就會觸發導航open-http://test.com
您可以與您的代理,然後檢測推出Safari瀏覽器:
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
{
if ([request.URL.scheme hasPrefix:@"open-"]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[request.URL.absoluteString substringFromIndex:5]]];
return NO;
}
// Other logic
return YES;
}
沒有原生的iOS應用 – user2996143 2014-09-02 18:30:01
我已經宣佈了網頁視圖的委託,但沒有得到任何事件。請幫我解決一下這個。 – user2996143 2014-09-02 18:31:55
相關:http://stackoverflow.com/questions/10909190/detect-window-open-from-uiwebview該解決方案按原樣打開Web視圖中的鏈接。 – 2014-09-02 18:35:56