SSブログ

【Tips】iPad で select.onchange 中に alert や confirm でフリーズする問題を回避 [iOS]

iOS 7.0.2 に見られた厄介な不具合の回避方法です。

iOS 7.0.2 Safari Mobile では、select タグの onchange イベントハンドラー内で JavaScript の alert や confirm を実行すると、ユーザーが応答した瞬間にフリーズします。

この問題を回避するには、alert や confirm を select.onchange イベントの期間の後で実行します。

まず select.onchange イベントハンドラーでタイマーだけを仕掛けてイベントから抜けておき、タイマーイベントで alert や confirm を実行したい処理を起動するようにします。

$(function() {
    $("select[id='id']").bind("change", null, function() {
        setTimeout(function() {
            if (confirm(message)) {
                ...
            }
            else {
                ...
            }
        }, 100);
    });
});


タイマーイベントが発生する前のなんらかのコンテキストをタイマーイベントハンドラー内の処理で取得したい場合には、クロージャを活用すると便利です。

なお、この不具合は iOS 7.0.3 でフィックスされたそうです。

 


nice!(2)  コメント(1)  トラックバック(0) 

nice! 2

コメント 1

One-for-you

iPhone 6は、夏、秋、噂が飛び始めましたねw
by One-for-you (2014-03-26 21:21) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

この広告は180日新規投稿のないブログに表示されます