従来、テストではHTMLとCSSの解析がチェックされていましたが、第3バージョンでは、開発者はDOMとJavaScriptのテストに重点を置いています 。 特にJavaScriptに関連して、正確にテストされているものを見てみましょう。
- 配列のエリシア -[,,]のようなものは長さがゼロでなければならず、配列[0 ,, 1]の場合は3でなければなりません。
- 配列メソッド -配列に複数の要素を追加し(.unshift(0、1、2))、未定義(.join(未定義))と組み合わせる機能をチェックします。
- 数値変換 -.toFixed()、. toExponential()、および.toPrecision()などのメソッドの動作は、まず小数および負の数でチェックされます。
- 文字列操作 -substr()メソッドは負の引数(.substr(-7、3))を使用できる必要があり、文字列の文字へのアクセスはその位置( "my string" [0])で行われる必要があります。 (これはECMAScript4仕様の一部です)
- 日付の操作 -一部のメソッドがNaNを返す(たとえば、引数なしのd.setMiliseconds())こと、および+1900年の必須オフセットが発生することを確認します。
- 変数名のUnicode文字 -それらを使用するとエラーが発生します。 例えば
eval( "test.i \\ u002b = 1;");
- 正規表現 -/ [] /は空の配列に対応する必要があり、/ [])] /はエラーを引き起こします。 存在しない画像とネガティブなルックアヘッドへの後方参照をサポートする必要があります-/(?! test)(test).exec(probtest test ")。
- 列挙 -オブジェクトのプロパティが正しく列挙されていること、特定の名前のプロパティ(toString、hasOwnPropertyなど)が利用可能であることを確認する必要があります。
- コンストラクター -ユーザーは、.constructorプロパティで独自のコンストラクトを定義できる必要があります。.constructorプロパティは列挙に含まれてはならず、.prototype.constructorプロパティは削除可能である必要があります。
- 関数 -関数自体を名前で呼び出す機能。名前を直接変更することは禁止する必要があります(関数の配列のみを使用)。 (機能テスト(){...})(); -「テスト」は、親領域に表示されるべきではありません。
- エラー-catch (){}ブロック内の変数は、最初にcatch()引数で、次に親引数で機能するはずです。 例えば
var e = "my name"; 試してみる { ... //いくつかのコード } キャッチ(e) { アラート(e); }
「私の名前」を表示すべきではありません。 - 割り当て操作 -s = a.length = "123"; -a.lengthは3ではなく123を返す必要があります
- エンコーディング -encodeURI()およびencodeURIComponent()は、nullバイトで正しく動作するはずです。
一般に、ECMAScript仕様の厳しいが必須の要件の、大まかな、しかし表面的な概要でした。 お気に入りのブラウザを開くと、これらの要件のうち少なくとも1つが満たされていないことに気付くだけです。
テストの作成者は、今後数日間で詳細を提供することを約束します。
そして最後に、著者が提供した最も人気のあるブラウザーの未完成バージョンで未完成のAcid 3をテストした予備結果。 私たちはチェックしました、それはすべて一緒に収まります! =)
ブラウザに表示されるベンチマークは次のとおりです。
Firefox 2.x
Firefox 3.0b2
Safari 3
毎晩Webkit
Opera 9.5b1
Internet Explorer 7
関連リンク:
webdev.lovata.comからのクロスポスト