12

JQuery Mobile 1.2.0 で PhoneGap 2.3.0 に問題があります。

iOS の外部リンクは、Safari をアプリ内で開くのではなく、アプリ内で開くため、ユーザーはアプリを再起動しないとアプリに戻ることができません。

外部リンクであることを示すためにrel="external"target="_blank"の両方を試しましたが、どれも成功しませんでした。

JQMobile を使用した PhoneGap が動作するデフォルトの方法が、私が望む方法であることを確認しました。この種の動作に対する多くの要求を見つけましたが、その方法ではありません。

4

4 に答える 4

14

rel="external"アンカーリンクに追加しました。

そして、クラスにshouldStartLoadWithRequestメソッドを追加/オーバーライドしました:MainViewController

- (BOOL) webView:(UIWebView*)theWebView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType
{
    NSURL *url = [request URL];

    // Intercept the external http requests and forward to Safari.app
    // Otherwise forward to the PhoneGap WebView
    if ([[url scheme] isEqualToString:@"http"] || [[url scheme] isEqualToString:@"https"]){
        [[UIApplication sharedApplication] openURL:url];
        return NO;
    }
    else {
        return [super webView:theWebView shouldStartLoadWithRequest:request navigationType:navigationType];
    }
}

これは、jQuery Mobile 1.2 と Phonegap 2.2.0 で機能します。Phonegap 2.3.0 でも同じように動作するはずですが、テストしていません。

================================================== ================================

更新

Phonegap 2.7.0 以降では、これを行う必要がない場合があります。Phonegap は、UIWebView、Safari、または InAppBrowser コンポーネントのいずれかでリンクを開くことができるようになりました。個人的には InAppBrowser コンポーネントが気に入っています。多くのユースケースでユーザー エクスペリエンスが向上しているようです。リンクを Safari で開きたい場合は、Javascript を使用してこれを実行できるようになりました。

window.open('http://whitelisted-url.com', '_system');

または InAppBrowser の場合:

window.open('http://whitelisted-url.com', '_blank');

詳細については、こちらをご覧ください。

http://wiki.apache.org/cordova/InAppBrowser http://docs.phonegap.com/en/2.7.0/cordova_inappbrowser_inappbrowser.md.html#InAppBrowser

于 2013-02-07T02:16:38.163 に答える
7

@KyleSimmons と同じソリューションですが、インラインで短いだけです。しかし、簡単な修正。そして、私にとってはうまくいきます。

<a href="http://www.google.com/" onclick="window.open(this.href,'_system'); return false;">Google</a>
于 2013-04-30T14:00:14.747 に答える
-1

jQuery Mobile で外部リンクを開くには:

<a href="http://moorberry.net" data-rel="external">Like this</a>
于 2013-02-07T01:19:38.850 に答える