从打包为原生iOS应用的Web应用打开外部链接

时间:2012-03-30 10:13:55

标签: ios sencha-touch sencha-touch-2 web-applications

我的移动应用程序(使用Sencha Touch 2创建)上有一个target="_blank"属性的链接。该应用程序打包为本机iOS应用程序。问题是,链接没有按预期在Safari中打开,而是在应用程序内打开。在新的浏览器窗口中,在Safari中打开链接非常重要。我怎样才能做到这一点?

我应该补充说我正在使用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;
}

如何使用Sencha Touch原生包装做到这一点?

3 个答案:

答案 0 :(得分:8)

我用它在Mobile Safari或新窗口中打开链接。适用于原生iOS包装和网络应用程序:

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

答案 1 :(得分:3)

我还没有发现使用sencha原生包装的方法。

但是将应用程序包装在一个手机带中并在Xcode中编译应用程序,并将所需的URL添加到phonegap.plist中的ExternalHost数组中应该可以正常工作吗?

另外,(仍然在Phonegap解决方案上)我认为在App中打开AppDelegate.m来打开链接也可以正常工作。

答案 2 :(得分:1)

以编程方式(Javascript)打开Mobile Safari中的链接。 如果你不能使用标准的html链接,但你必须使用Javascript:

,这是理想的选择
var a = document.createElement("a");
a.setAttribute('href', facebook);
a.setAttribute('target', '_blank');
a.click();