ブラウザごとに違う「返り値」でつまずいたこと
js-STARをバージョンアップしていてつまずいたのでメモします。
safari5.1がすべての発端!!
Javascriptで
result = prompt('値を入力してね!','');
とすると、ダイアログが開いてユーザーからの入力を要求します。
そのダイアログには、「OK」「キャンセル」の2つのボタンがあり、
値を入力して「OK」をクリックしたときは、その値がresultに代入されます。
しかし!!
「キャンセル」をクリックしたときはどうかというと、
これがブラウザごとにことなるんですよ。
IE、FireFox、Chromeは、null
Operaは、undefined
safariは、false
ここでやっかいなのが、safariなんです。
まず、iPhoneやiPadのsafariでは、返り値はfalseではなくnullなんです。
そしてこれが一番厄介なんですけど、何も入力しなくて「OK」をクリックしても
resultにfalseが代入されてしまう。
つまり、「OK」「キャンセル」とキャンセルの区別がつかない。
いろいろ調べてみると、safari5.1になっていろいろとバグがあるようで
このpromptでのfalseの問題もそのときからのようです。
safari5.0ではnullが返されていたようなので・・・。
そんなこともあって、safariは動作保障から外そうかなと考えている
今日なのです。
というか、早く治して!
safari5.1がすべての発端!!
Javascriptで
result = prompt('値を入力してね!','');
とすると、ダイアログが開いてユーザーからの入力を要求します。
そのダイアログには、「OK」「キャンセル」の2つのボタンがあり、
値を入力して「OK」をクリックしたときは、その値がresultに代入されます。
しかし!!
「キャンセル」をクリックしたときはどうかというと、
これがブラウザごとにことなるんですよ。
IE、FireFox、Chromeは、null
Operaは、undefined
safariは、false
ここでやっかいなのが、safariなんです。
まず、iPhoneやiPadのsafariでは、返り値はfalseではなくnullなんです。
そしてこれが一番厄介なんですけど、何も入力しなくて「OK」をクリックしても
resultにfalseが代入されてしまう。
つまり、「OK」「キャンセル」とキャンセルの区別がつかない。
いろいろ調べてみると、safari5.1になっていろいろとバグがあるようで
このpromptでのfalseの問題もそのときからのようです。
safari5.0ではnullが返されていたようなので・・・。
そんなこともあって、safariは動作保障から外そうかなと考えている
今日なのです。
というか、早く治して!
ソフトウエア | - | trackbacks (0)