MyNoteBook weblog

自作ソフトウェアや気になるものについて書いています

ブラウザごとに違う「返り値」でつまずいたこと

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は動作保障から外そうかなと考えている
今日なのです。

というか、早く治して!
ソフトウエア | - | trackbacks (0)

Trackbacks

■同一カテゴリー記事(最新5)
CATEGORIES
NEW ENTRIES
RECOMMEND
【いちばんやさしい教える技術】…
いちばんやさしい教える技術

Book (発売日:2012-04-16)
【いままでのA面、B面ですと!?(通常盤)】…
いままでのA面、B面ですと!?(通常盤)

Music (発売日:2009-11-25)
RECENT TRACKBACK
ARCHIVES
PROFILE
OTHER