2014-09-02 123 views
0

我正在研究一個解析RSS提要並在webview中顯示詳細信息的應用程序。我想在web視圖點擊時打開外部瀏覽器鏈接,但有一個問題是超鏈接類型是如下:在外部瀏覽器中打開鏈接

<a href="#" onclick="window.open('http://test.com', '_system', 'location=yes');"><img src="xyz.png"></a> 

你能告訴我怎麼去事件時,這個點擊的網頁流量?任何幫助將不勝感激?

+0

沒有原生的iOS應用 – user2996143 2014-09-02 18:30:01

+0

我已經宣佈了網頁視圖的委託,但沒有得到任何事件。請幫我解決一下這個。 – user2996143 2014-09-02 18:31:55

+0

相關:http://stackoverflow.com/questions/10909190/detect-window-open-from-uiwebview該解決方案按原樣打開Web視圖中的鏈接。 – 2014-09-02 18:35:56

回答

1

您可以檢測和攔截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; 
} 
+0

你是救命的人。非常感謝 – user2996143 2014-09-02 18:52:11

相關問題