Firefox 5 is here
原文: Firefox is here
本日, Firefox 4 のリリースより3ヶ月を経て、私達は Firefox 5 をリリースしました。新しい development cycle による最初のリリースです。開発者はよりリッチなアニメーションを CSS3 Animations を使うことで作成できます。このリリースでは様々な改善、性能の最適化、そしてバグ修正が行われました。
CSS3 アニメーション
CSS アニメーション (この文書を参照してください) は、CSS を使用してアニメーションを作成する新たな手段です。 CSS Transitions のように、効率的でスムーズに動きます (David Baronの 投稿記事をご覧ください)また、開発者はそれぞれのステップ(keyframes)においてよりきめ細かな制御を行い、複雑なアニメーションを作成することができるようになりました。
主な変更
- createImageData への引数として、寸法をコピーするための画像を渡すことができるようになりました。
- setTimeout と setInterval はアクティブでないタブでは1秒に1度だけコールバックを実行できます。これは、requestAnimationFrame の挙動に沿い、CPU と電源の消費を減らすためです。
その他のバグ修正と性能の改善:
HTML
- すべての HTML 要素は
accessKey
属性と、blur()
、click()
、focus()
の各メソッドを持つことになりました。これらはHTMLElement
インタフェースで規定されています。 - HTML5 の仕様に従うために、UTF-7 と UTF-32 文字コードセットのサポートは取り除かれました。
- quirks モードでは、マッチングにおいて空の
<map>
が空でないものを優先するためにスキップされることはなくなりました。詳しくは Gecko notes の<map>
要素の項をご覧ください。 - Android版のFirefox mobile は
@font-face
で WOFF フォントをサポートするようになりました。 - WebGL はオリジナルのドメイン以外からはテクスチャをロードしなくなりました。安全性に配慮したものです。
Canvas の改善
<canvas>
2D 描画のコンテキストにおいてImageData
オブジェクトをcreateImageData()
メソッドへの入力として指定できるようになりました; こうすると指定されたオブジェクトと同じ寸法を持ち、すべてのピクセルが透明な黒にセットされた 新たなImageData
オブジェクト を生成します。CanvasGradient
のaddColorStop()
メソッドの呼び出しで非有限なカラーストップが指定された際、INDEX_SIZE_ERR
が適切に投げられるようになりました (これまではSYNTAX_ERR
が投げられていました)。HTMLCanvasElement
のtoDataURL()
メソッド実装が修正され、指定した MIME 型をマッチングの前に小文字に変換するようになりました。getImageData()
が修正され、canvas の境界を超えた矩形を受け入れるようになりました。canvas 外にあるピクセルは透明な黒として返されます。drawImage()
とcreateImageData()
が仕様に準拠し、負の引数を処理するようになりました。この処理は、適切な軸にそって矩形を反転させます。createImageData()
の呼び出しで非有限な値が指定された際、NOT_SUPPORTED_ERR
が適切に投げられるようになりました。- 1px より小さな矩形が指定された際、
createImageData()
とgetImageData()
は適切に 1px 相当の ImageData を返すようになりました。 createRadialGradient()
の半径に負の値を指定した際、INDEX_SIZE_ERR
が適切に投げられるようになりました。createPattern()
とdrawImage()
の呼び出しで、画像にnull
やundefined
が指定された際、TYPE_MISMATCH_ERR
例外が適切に投げられるようになりました。globalAlpha
に不正な値が指定されてもSYNTAX_ERR
例外が投げられないようになりました。このような場合は適切にただ無視されます。translate()
,transform()
,rect()
,clearRect()
,fillRect()
,strokeRect()
,lineTo()
,moveTo()
,quadraticCurveTo()
,arc()
に不正な値が指定されても例外が投げられないようになりました。このような場合は適切にただ無視されます。shadowOffsetX
,shadowOffsetY
,shadowBlur
に不正な値が指定された際、それらはただ無視されるようになりました。rotate
,scale
に不正な値が指定された際、それらはただ無視されるようになりました。
CSS
- CSS animations のサポートが追加されました。現時点では
-moz-
プレフィックスを付けて使ってください。
DOM
-
selection
オブジェクトのmodify()
メソッドが変更され、単語の選択で単語の後にある空白を含まなくなりました。この変更でプラットフォームを超えての一貫性が向上し、また WebKit の挙動とも一致します。 - アクティブでないタブにおいて
window.setTimeout()
メソッドのタイムアウトが 1秒に1回を超えることがなくなりました。また、入れ子のタイムアウトが HTML5 仕様で定められた最小値 4ms になりました (これまでは 10ms でした)。 - 上記と同様に、アクティブでないタブにおける
window.setInterval()
メソッドのインターバルも 1回/s 以下になりました。 XMLHttpRequest
が進行リスナのloadend
イベントをサポート するようになりました。このイベントはすべての転送が終了した際 (つまり、abort
,error
,load
イベントの後) に発生します。このイベントを利用すると、転送の成功・失敗に関わらず実行されるタスクを処理できます。-
Blob
オブジェクトとFile
オブジェクトのslice()
メソッドが削除され、代わりに提案中のメソッドに置き換えられました。提案中のメソッドは JavaScript のArray.slice()
,String.slice()
メソッドにより近いものです。現時点ではmozSlice()
という名前がつけられています。 -
window.navigator.language
の値がAccept-Language
HTTP ヘッダ の値から決定されるようになりました。
JavaScript
- 正規表現を関数のように呼び出せなくなりました。この変更は WebKit チームと互換性の確保について話し合った結果行われたものです( WebKit bug 28285 をお読みください)。
Function.prototype.isGenerator()
メソッドがサポートされました。このメソッドによってある関数が generator であるかを調べられます。
SVG
class
SVG アトリビュートを動的に変化させられるようになりました。SVGLengthList
,SVGNumberList
,SVGPathSegList
,SVGPointList
など、オブジェクトのリストを表す SVG DOM インターフェースがインデックス可能となり、配列のようにアクセスできるようになりました。加えて、リスト中の項目数を表すlength
も持ちます。
HTTP
- Firefox は “Keep-Alive” HTTP ヘッダを送信しなくなりました。私たちはこのヘッダを正しく整形していませんでした。また、
Connection:
やProxy-Connection:
ヘッダに “keep-alive” を指定していたため、これらと重複していました。 - HTTP のトランザクションモデルを変更し、持続的接続プール内の接続を再利用するという、より高度なものになりました。Necko はプールを FIFO として扱うのではなく、プール内の接続を congestion window (CWND) の大きい順に並べ替えます。多くのケースで Window のサイズ拡大を避け、 HTTP トランザクションの確認応答時間 (RTT) を減少させることができるでしょう。
- Firefox は Content-Disposition HTTP レスポンスヘッダについて、
filename
,filename*
パラメタがどちらも与えられている場合にそれらをより効果的に処理するようになりました。これはfilename
が先に与えられている場合でもfilename*
をまず調べすべての名前を読み取ることで実現しています。これまでは最初にマッチしたパラメタが使われており、後により適切な名前が与えられていた場合でもそれが使われなかったのです。詳細は bug 588781 をお読みください。
MathML
- embellished operators がサポートされました。
開発者向けツール
- Web コンソールの
Console
オブジェクト にdebug()
メソッドが導入されました。これはlog()
のエイリアスで、導入によっていくつかの Web サイトとの互換性が向上します。