5

私はこの質問をいくつかのバリエーションでグーグルで検索しましたが、PhoneGapまたはjQuerymobileを使用する場合にのみ回答を見つけることができます。ただし、どちらも使用していません...単純な古いhtmlとjavascriptだけです。

インラインアンカーではなく、window.open()...を使用してフルスクリーンWebアプリからモバイルサファリを起動しようとしています。私が何をしても、URLはSafariではなくWebアプリで開きます。誰か提案はありますか?

ありがとう。

4

6 に答える 6

2

しばらく時間がかかりましたが、このソリューションをつなぎ合わせることができました。iOS スタンドアロン Web アプリ モードでは、jQuery を使用してリンク要素を作成し、それを本文に追加し、クリックをシミュレートしてから、リンクを削除します。jQuery を使用しなくても同じことを実現できます。単純な DOM メソッドを使用すると、より多くのコードが必要になるだけです。

if (window.navigator.standalone) {
  var $a = $('<a href="' + url + '" target="_blank"/>');
  $("body").append($a);

  var a = $a.get(0);

  var mouseEvent = a.ownerDocument.createEvent('MouseEvents');
  mouseEvent.initMouseEvent('click');
  a.dispatchEvent(mouseEvent);

  $a.remove();
}
else {
  window.open(url, '_blank');
}
于 2012-06-20T19:41:04.850 に答える
1

PhoneGap では、デフォルトですべての URL が WebView に読み込まれます。ターゲットを設定したり、JS に凝ったりしても、その WebView から外部リンクが壊れることはありません。外部 URL を PhoneGap アプリ自体ではなく Safari に読み込むには、アプリケーション デリゲートでの URL の処理方法を変更する必要があります。

PhoneGap アプリ コードを開き、[projectname]AppDelegate.m を見つけます。通常は [projectname]/Classes フォルダーにあります。

必要に応じて shouldStartLoadWithRequest を変更します。以下は、リクエストを評価し、HTTP または HTTPS スキームを処理して Safari にロードするサンプル実装です ( http://solutions.michaelbrooks.ca/2011/02/15/open-external-links-in-safariapp/から借用):

- (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 ];
    }
}
于 2011-08-01T21:45:21.303 に答える
1

iOS 4.3 の時点で、私が知っている唯一の方法は、 を に変換し<div><a target="_blank">デフォルトのブラウザで処理できるようにすることです。新しいページを外部の Safari で起動します。

于 2011-05-02T23:14:41.343 に答える
0

通常の A HREF タグは使用できませんか? これは通常、webapp 内から Safari を開きます。

于 2011-04-07T12:47:39.427 に答える
0

使ってみましたwindow.openNative()か?

于 2011-03-24T18:04:22.900 に答える
0

標準の HTML リンクを作成できないが、Safari をプログラムで (Javascript コードのみで) 開く必要がある場合は、次のコードを使用します。

var a = document.createElement("a");
a.setAttribute('href', facebook);
a.setAttribute('target', '_blank');
a.click();
于 2014-04-17T13:51:10.207 に答える