Открыть внешнюю ссылку из веб-приложения, упакованного как родное приложение iOS - PullRequest
2 голосов
/ 30 марта 2012

У меня есть ссылка на мое мобильное приложение (созданное с помощью Sencha Touch 2) с атрибутом target="_blank".Приложение упаковано как нативное приложение для iOS.Проблема в том, что ссылка в Safari открывается не так, как ожидалось, а открывается внутри приложения.Очень важно, чтобы ссылка открывалась в Safari в новом окне браузера.Как мне этого добиться?

Я должен добавить, что я использую нативный упаковщик Sencha (пакет sencha).Поведение по умолчанию открывает новое окно в том же веб-представлении.Но мне нужно, чтобы они открывались в мобильном 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 ]

8 голосов
/ 13 января 2013

Я использую это, чтобы открывать ссылки в Mobile Safari или в новом окне.Работает с собственной упаковкой iOS и веб-приложениями:

function externalLink(link) {
try{
    Ext.device.Device.openURL(link);
}catch(err) {
    window.open(link, '_blank');
}
}
3 голосов
/ 06 апреля 2012

Я не нашел способа сделать это с помощью собственной упаковки sencha.

Но упаковка приложения в телефонный пробел и компиляция приложения в Xcode с необходимыми URL-адресами, добавленными в массив ExternalHost в phonegap.plist, должны работать правильно?

Кроме того, (все еще в решении Phonegap) я предполагаю, что взлом AppDelegate.m для открытия ссылок в Safari будет работать так же хорошо.

1 голос
/ 18 апреля 2014

Программно (Javascript) открывает ссылку в Mobile Safari. Идеально, если вы не можете использовать стандартную ссылку HTML, но вы должны использовать Javascript:

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