22

iOS (現在 7.0) では、Web アプリがホーム画面にピン留めされている場合 (メタ タグを使用して)、動作していないようalert()に見えます。confirm()apple-mobile-web-app-capable

Twitter で同様の問題を抱えているユーザーを見つけました。

https://twitter.com/thomasfuchs/status/380137801259704320

それが本当に iOS 7 のバグである場合、だれかが一時的な修正を行いますか?

4

7 に答える 7

14

アラートが Web アプリを壊すという同様の問題がありました。特定のケースは、選択リストの onchange からトリガーされたアラートでした。次のような非常に単純なテスト ページを作成しました。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width">
    </head>
    <body>
        <select onchange="alert('broken!');">
            <option value="one">One</option>
            <option value="two">Two</option>
        </select>
    </body>
</html>

iPad で Safari からそのページを実行し、選択リストを変更すると、アラートがトリガーされ、Safari がフリーズします。その後、実際に Safari を閉じる必要があります。これは一般的に Safari に影響します。Web アプリをホーム画面にピン留めする必要はありません。このテスト ページhttp://jsbin.com/AGoTejA/1で、iOS 7 を実行している iPad でこれをテストできるはずです。

これを iPad 2 (MC774B/A) と iPad 3 (MD367B/A) でテストしたところ、両方で Safari がクラッシュしました。

これを回避するハックな方法は、setTimeout() を使用してアラートの実行を遅らせることです。この問題は、Safari が選択リスト項目とアラートを同時に表示するオーバーレイを表示しようとした場合にのみ発生するようです。confirm() も同様に壊れています。

于 2013-09-23T12:54:28.673 に答える
9

JavaScriptalert()confirm()バグは、iOS 7.0.3 で修正されています。

于 2013-10-22T22:40:54.497 に答える
4

setTimeout で解決しました

<select onchange="setTimeout(function(){alert('not broken!');},200)">
                <option value="one">One</option>
                <option value="two">Two</option>
            </select>

http://jsbin.com/iPuXiVA/4/

とにかく、このバグは iPhone ではなく iPad に影響を与えるようです。

于 2013-10-21T19:28:42.060 に答える