2012-03-30 81 views
2

我的移動應用程序(使用Sencha Touch 2創建)上的鏈接帶有target="_blank"屬性。該應用程序打包爲本機iOS應用程序。問題是,該鏈接未按預期在Safari中打開,而是在應用程序中打開。在新的瀏覽器窗口中,鏈接在Safari中打開非常重要。我怎樣才能做到這一點?打開作爲本機iOS應用程序打包的網絡應用程序的外部鏈接

我應該補充說我正在使用Sencha(sencha軟件包)的本機包裝程序。默認行爲似乎在同一個webview中打開新窗口。但我需要他們在移動Safari中打開。

在Xcode項目,我可以做到以下幾點:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { 
    if (navigationType == UIWebViewNavigationTypeLinkClicked) { 
     [[UIApplication sharedApplication] openURL:request.URL]; 
     return NO; 
    } 
    return YES; 
} 

如何做到這一點與煎茶觸摸原始包裝?

+0

[UIApplication的sharedApplication]的OpenURL:[NSURL URLWithString:@ 「您的鏈接」]]; – Hiren 2012-04-02 10:07:01

+0

請閱讀我的帖子,我正在談論使用Sencha Touch框架的本機包裝。 – 2012-04-02 11:00:20

+0

如果您不使用本機打包器,那麼肯定有辦法做到這一點。 – 2012-04-04 21:38:30

回答

3

我還沒有發現一種方法來做到這一點與sencha本地包裝。

但是將應用程序封裝在phonegap中,並在Xcode中編譯應用程序,並將所需的url添加到phonegap.plist中的ExternalHost數組中應該工作正確嗎?

此外,(仍然在Phonegap解決方案)我假設黑客攻擊AppDelegate.m在Safari中打開鏈接將工作得很好。

+0

我給你的賞金,因爲你提供了最好的答案。我也認爲現在在Sencha Touch中沒有辦法做到這一點,我最終還是遇到了另一個使用phonegap的問題。 – 2012-04-06 19:25:40

8

我用它打開Mobile Safari或新窗口中的鏈接。適用於Native iOS包裝和網絡應用程序:

function externalLink(link) { 
try{ 
    Ext.device.Device.openURL(link); 
}catch(err) { 
    window.open(link, '_blank'); 
} 
} 
+0

非常感謝這個功能,本。 – 2013-03-18 15:10:33

+0

這很有幫助,但您如何調用該功能?我添加帶有「Ext.Panel」鏈接的HTML,並希望鏈接在Safari中打開。 – 2013-10-31 21:15:50

1

以編程方式(Javascript)在Mobile Safari中打開鏈接。 理想的,如果你不能用一個標準的HTML鏈接,但你必須使用JavaScript:

var a = document.createElement("a"); 
a.setAttribute('href', facebook); 
a.setAttribute('target', '_blank'); 
a.click(); 
相關問題