1

私のブラウザー (Firefox、Chrome、iPad の Safari) で完全に動作する小さな Web アプリを開発しました。次に、アプリを変更して、iPad でスタンドアロンの Web アプリとして実行することにしました。ウェブ上でかなり良い情報を見つけたので、これは問題ありませんでした。

多くのアプリ内部リンクを使用しているため、次の JavaScript jQuery コードをアプリに追加しました。

if (window.navigator.standalone) {
    // running as web app

    $(function () {
        $('a').each(function () {
            if (!$(this).hasClass('external')) {
                var href = $(this).attr('href');
                $(this).attr('href', 'javascript:this.location = \'' + href + '\'');
            }
        });
    });
}

アプリがスタンドアロン モードで実行されている場合、このコードは CSS クラスを持たないすべてのリンクを変更してexternal、新しい Safari ウィンドウで開かないようにします。このコードは正常に動作します。

問題は、外部リンクを開くと、新しい Safari ウィンドウが開くことです (予想どおり)。しかし、アプリに (4 本指のジェスチャーを使用して) 戻ると、アプリはフリーズします。ホームボタンを押すと、iPad は私のホーム画面を一瞬だけ表示し、すぐに iPad の検索画面に切り替わる。画面をオフにして再度オンにすると、ホーム画面になります。

機能する唯一のジェスチャは、タスク バーを表示するための 4 本指ジェスチャです (その名前ですか?)。タスク バーを使用してアプリを終了すると、アプリは画面に表示されたままになり、iPad はアプリを終了していないかのように動作します (最後の段落を参照)。アプリがクレイジーな方法でクラッシュしたように感じます。

何を間違えたのかわからない。これは非常に単純な Web ページで、JavaScript がほとんどなく、深くネストされていない HTML 構造になっています。

デバイスは、iOS 5.1 を搭載した iPad 2 3G です。

誰でもこれで私を助けることができますか?

4

1 に答える 1

1

だから私はこのリンクを読む前にこのコードを与えました: iPhone Safari Web App opens links in new window

この答えを試しましたか?


私の以前の答え:

if (window.navigator.standalone) {
  // running as web app

  $(function () {
    $('a').each(function () {
        if (!$(this).hasClass('external')) {
            var href = $(this).attr('href');
            $(this).click(function() { window.location = href; return false;});

        }
    });
  });
}
于 2012-04-11T18:33:39.350 に答える