Safari の JavaScript の不備
2006-01-13


ぱっと見はいいんだけど細かいところでちょこちょこ穴があるような気がする Safari (というより Apple WebKit) ですが、どのような穴がいつふさがれてきたのかまとめてみました。最初は JavaScript 関係だけ調べるつもりだったのですが Safari 2.0.3 で setSelectionRange がサポートされたというのを聞いたのでそっちのほうも少し。ただし、手元に Mac 環境がないので実際に Safari で試したわけではありません。すべてソースと変更履歴から推測しただけなのでそのつもりで。

下の表で「WebKit」というのはその機能が実装された WebKit の (正式公開) バージョン、「Safari」というのはそのときの Safari のバージョンをあらわしています。「-」はその機能が現時点 (Safari 2.0.3) でも未実装ということです。「-」はその機能が未実装、またはその機能を実装した WebKit が正式に公開されていないことを意味します。「?」が付いているのは推測です。

機能 WebKit Safari
Object#toLocaleString - 3?
Object#hasOwnProperty 416.11 2.0.2
Object#isPrototypeOf - 3?
Object#propertyIsEnumerable - 3?
({ name: value, }) (オブジェクト初期化子での終端へのコンマの付与) - 3?
ゲッタ / セッタ - 3?
string[n] (文字列に対する添字でのアクセス) 100 1.1
for (var i in string) (for-in 文での文字列の添字 (0, 1, 2, ...) の列挙) - 3?
String#indexOf.length == 1 312.1 1.3
String#lastIndexOf.length == 1 312.1 1.3
String#localeCompare - -
String#match(noMatch) == null (match メソッドでマッチしなかったときは、空の配列ではなく null が返る) 100 1.1
String#replace(/.{n,m}/, replacement) (量指定子 {n,m} を含む正規表現の replace メソッドでの使用) 412.7 2.0.1
String#replace(regexp, func) (第 2 引数への関数の指定) 417.9 2.0.3
String#replace(regexp, "$`$&$'") (置換文字列での $` (先行部分)、$& (一致部分)、$' (後続部分) のサポート) - 3?
String#slice(negative) (第 1 引数への負数の指定) 124 1.2
String#split(/.../i) (split メソッドでの ignoreCase プロパティの反映) - 3?
String#toLocaleLowerCase 312.1 1.3
String#toLocaleUpperCase 312.1 1.3
"String \
literal"
(文字列リテラル中での改行へのエスケープシーケンス)
125.5.5 1.2.4
(-0.5).toString(2) == "-0.1" (負数または小数に対する 10 以外を基数とした toString メソッドの適用) - 3?
Number#toFixed 312.1 1.3
(0.5).toFixed(0) == "1" (Number#toFixed では大きい数に丸められる) - 3?
(0.5).toFixed(1) == "0.5" (Number#toFixed では整数部が 0 の場合文字列 "0" が使われる) - 3?
Number#toExponential 312.1 1.3
(0.5).toFixed() == "1" (Number#toFixed および

続きを読む

[JavaScript]
[Web 関連技術]

コメント(全3件)
コメントをする


記事を書く
 powered by ASAHIネット