2012-03-30 59 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(); 
相关问题