iOS

2014-07-07, ios

iOSのブラウザでonchangeイベントからalert/confirmを呼ぶとフリーズする

こんなに簡単に再現出来るバグがまだiOSに残っていたとは…。勿論、サポートにも報告されています。7.0.3で修正された、という記述も時折見かけますが、7.1.2に残っていることを思いっきり確認できます。

<select onchange="alert('Hi')">
  <option>Foo</option>
  <option>Bar</option>
</select>

上記のセレクトメニューの値を変更すると、ダイアログが表示されるのですが、このダイアログを消せなくなってしまう、という不具合です。confirmのダイアログでも同様のことが起こります。iPadのみのようで、iPhoneのブラウザでは再現しません。Safariの不具合かと思いきやChromeでも発生します。

回避コードも出回っていて、setTimeoutでタイミングをずらしてやれば、フリーズしなくなります。

<select onchange="setTimeout(function(){alert('Hi')})">
  <option>Foo</option>
  <option>Bar</option>
</select>

参考URL

この記事は役に立ちましたか?