Firefox 6 は Gecko 6.0 ベースのブラウザで、2011 年 8 月 16 日にリリースされました。このページは Firefox 6 のリリースにあたり、開発者に関係する変更についてまとめたものです。
Web 開発者向けの変更点一覧
HTML
- プログレスバーを表す HTML5 の
<progress>
要素がサポートされました。 - メディア要素にテキストトラックを追加する HTML5 の
<track>
要素について、そのパース処理部分が実装されました。要素そのものは実装されていませんが、DOM に現れるようにはなります。 border-radius
プロパティによって角が丸められたコンテナ内の<iframe>
についても、適切に角が丸められるようになりました。<form>
要素の<input>
テキストフィールドが XUL のmaxwidth
プロパティをサポートしなくなりました。これは意図的なものではなく、また HTML 仕様違反でもあります。要素の最大幅を設定するには、size
属性を利用します。<canvas>
のCanvasRenderingContext2d
プロパティfillStyle
とstrokeStyle
はこれまで、妥当な色の指定の後に続く余計なものを無視する処理をしていましたが、適切にエラーとして処理されるように修正されました。たとえば、"red blue" を指定したとき、これまでは "red" と扱われていましたが、これからは指定そのものが無視されます。<canvas>
要素の width と height を適切に 0px と指定できるようになりました。これまではそう指定しても 300px にされていました。- HTML カスタムデータ属性 (data-*) がサポートされました。DOM プロパティ
element.dataset
からデータにアクセスできます。 <textarea>
要素がフォーカスされたとき、テキスト挿入箇所が最後ではなく先頭になりました。これにより、他のブラウザの挙動と一致します。
CSS
-
-moz-text-decoration-color
-
このプロパティは
text-decoration
で指定するunderline
,overline
,strikethrough
などの色を指定します。 -
-moz-text-decoration-line
-
このプロパティは
text-decoration
の種類を指定します。 -
-moz-text-decoration-style
-
このプロパティは
text-decoration
で指定するunderline
,overline
,strikethrough
などのスタイルを指定します。スタイルにはsolid
,double
,dotted
,dashed
,wavy
などがあります。 -
-moz-hyphens
- このプロパティは行送りが発生する際、単語のハイフネーションを制御するプロパティです。
-
-moz-orient
-
現在は Mozilla 固有のプロパティで、いくつかの要素 (
<progress>
要素など) の縦横の向きを制御します。 -
::-moz-progress-bar
-
Mozilla 固有の擬似要素で、
<progress>
要素において、完了した部分のスタイルづけを行うためのものです。
その他の変更
@-moz-document
に新しくregexp()
関数記法が追加されました。これにより、スタイルシートを適用する文書の URL を 正規表現でマッチさせられます。aural
媒体グループのために持っていたコードを削除したため、azimuth
CSS プロパティのサポートが廃止されました。このプロパティはちゃんと実装されていなかったため、パッチを当て続けるのではなく未完成の実装を省くほうが理にかなっていると考えました。- これまで、
:hover
擬似クラスは Quirks モードにおいてクラスセレクタに適用されませんでした。このため.someclass:hover
といったコードは動きませんでしたが、この例外が取り払われました。 :indeterminate
擬似クラスは<progress>
要素にも適用できます。これは非標準ですが、便利ですので他のブラウザにも取り入れられて欲しいと考えています。
DOM
- コード内でのメディアクエリの使用
-
window.matchMedia()
メソッドとMediaQueryList
インターフェースによって、メディアクエリーの結果をプログラムから検証できます。 - Touch events
- Firefox 6 は W3C の標準タッチイベント仕様をサポートします。これにより、タッチスクリーンやトラックパッドなどタッチセンサー式のデバイスでのタッチの解釈が容易になります。
- Server-sent events
- Server-sent events はサーバが手元で生成された DOM イベントと同じようにイベントを送出するよう、Web アプリケーションが尋ねるための機能です。
- これまでずっと、空文字列を返すだけだった
navigator.securityPolicy
プロパティが完全に削除されました。 BlobBuilder
がサポートされました。現時点では接頭辞付きの実装 (MozBlobBuilder
) となっています。document.height
,document.width
が削除されました。 バグ 585877DocumentType
オブジェクトのentities
,notations
プロパティが削除されました。これは実装されておらず常にnull
を返しており、また仕様からも削除されていました。DOMConfiguration
インターフェースと、それを使用していたdocument.domConfig
プロパティが削除されました。これらはサポートされておらず、また DOM 仕様からも削除されていました。hashchange
イベントが適切にnewURL
,oldURL
フィールド を含むようになりました。FileReader
インターフェースのabort()
メソッドが、ファイルの読み込み中に利用された際に例外を投げるようになりました。window.postMessage()
メソッドが structured clone algorithm を使用するようになり、あるウィンドウから他のウィンドウに文字列ではなく JavaScript オブジェクトを渡せるようになりました。window.history
API がpushState()
,replaceState()
メソッドに渡されたオブジェクトのシリアライズに structured clone algorithm を使用するようになりました。これによって循環参照などを含むより複雑なオブジェクトも使用可能となりました。- 新しく追加された
beforeprint
,afterprint
イベントによって、印刷が行われたときと完了したときを検出する ことができるようになりました。 document.strictErrorChecking
プロパティが削除されました。実装されておらず、また DOM 仕様からも削除されていました。- 標準である
event.defaultPrevented
プロパティがサポートされました。event.preventDefault()
がイベントから呼び出されたかを知る際には、非標準のgetPreventdefault()
ではなくこちらを使うようにしましょう。 window.top
プロパティが、適切に readonly となりました。- これまでドキュメントのなかった DOM views が削除されました。これらには実装の詳細が多く、また不必要に様々なものを複雑にしていたため削除されました。もしこの変化に気づいた場合は、何か誤ったことをしている可能性があります。
EventTarget
の関数addEventListener()
に指定する引数useCapture
が optional となりました。これは WebKit の動作とも共通し、また新しい仕様でもそう定義されています。XMLHttpRequest
オブジェクトのmozResponseArrayBuffer
プロパティがresponseType
,response
プロパティに置き換えられました。HTMLElement
インターフェースにelement.dataset
プロパティが追加されました。このプロパティにより 要素のdata-*
グローバル属性 にアクセスできます。CustomEvent
インターフェースが実装されました (バグ 427537)- セキュリティの観点から、ユーザーがロケーションバーに
data:
URI とjavascript:
URI を入力した時、現在のページのセキュリティコンテキストを受け継がなくなりました。代わりに、新しい空のセキュリティコンテキストが生成されます。これにより、ロケーションバーに入力したjavascript:
URI から読み込まれたスクリプトは、DOM メソッドなどへのアクセスを持たなくなります。しかし、これらの URI がスクリプトから使用された場合は、これまでと同じように動作します。
JavaScript
- これまで、いくつかの組み込み関数 (
eval
,parseInt
,Date.parse
など) に対しnew
オペレータを使うことができましたが、仕様においてこれは許されるべきではないとされていました。Firefox 6 では、このサポートが廃止されました。new
オペレータのこういった利用は公式にはサポートされておらず、また広く利用されてもいません。この変更が何かに影響することはないでしょう。 - ECMAScript Harmony の WeakMaps がプロトタイプ実装として追加されました。
SVG
pathLength
属性がサポートされました。data:
URL から読み込まれたパターン、グラデーション、フィルタが適切に動作するようになりました。
MathML
<mstyle>
の実装が修正されました。
アクセシビリティ (ARIA)
- 状態変化イベントが
aria-busy
の値の変化でも発生するようになりました。 aria-sort
が発生した際に属性変化イベントが発生するようになりました。
ネットワーク
- WebSocket
-
WebSocket プロトコルのサポートがバージョン 07 に更新されました。また、グローバルオブジェクトの
WebSocket
オブジェクトがMozWebSocket
に改称されました。接頭辞のないオブジェクトの検出を目的としたときに問題となるため、それを防ぐ目的です。
Content-Disposition
ヘッダの構文解析が修正され、バックスラッシュでエスケープされた ASCII 文字が適切に文字そのものとして処理されるようになりました。これまではその文字をアンダースコア ("_
")に置き換えるという誤った処理がなされていました。Set-Cookie
ヘッダのパスの値において、クォートが適切に処理されるようになりました。これまでクォートを使った場合はそれがデリミタではなく、パスの文字列として認識されていました。この変更により、いくつかのサイトで互換性の問題が発生する可能性があります。製作者はコードをチェックすることが望まれます。Upgrade
リクエストヘッダがサポートされました。nsIHttpChannelInternal.HTTPUpgrade()
を呼ぶことで、HTTP チャネルから他のプロトコルへのアップグレードをリクエストできます。
その他の変更
- Microsummary が削除されました。広く使われおらず、また見つけにくい機能でもあり、サポートの継続によって Places (ブックマークと履歴) のアーキテクチャを向上させることが難しくなっていたからです。
- WebGL が
OES_texture_float
拡張をサポートしました。 - JavaScript コードをテストする簡易で便利なツール Scratchpad が追加されました。
Mozilla 開発者とアドオン開発者向けの変更点
Firefox 6 へアドオンを対応させるために必要な作業の概要は アドオンの Firefox 6 対応 をご覧ください。
注: Firefox 6 では、従来のメジャーリリースと同様に、バイナリコンポーネントをコンパイルし直す必要があります。詳しくは バイナリインタフェース をご覧ください。
JavaScript コードモジュール
FileUtils.jsm
openSafeFileOutputStream()
メソッドは、ファイルを即座に開こうとする代わりに、DEFER_OPEN
ビヘイビアフラグ 付きで開くようになりました。
XPCOMUtils.jsm
- 新しい
importRelative()
メソッドは、ある JavaScript コードモジュールを、他の JavaScript コードモジュールの相対パスから読み込むようになりました。これによって互いに依存するモジュールを開発しやすくなりました。
XPCOM
nsCOMArray<T>
に、配列から複数のオブジェクトを一度に削除できるRemoveObjectsAt()
メソッドが追加されました。
クロームからの DOM の使用
- クロームコードでの DOM File API の使用
-
これまでもクロームコード内で DOM File API を使うことは可能でしたが、
File
コンストラクタをクロームで使用した場合に、ローカルパス名文字列を指定できるようになりました。また、nsIFile
オブジェクトを使用して、DOM File API を通じてアクセスするファイルを指定できるようになりました。
インタフェースの変更
nsINavHistoryQueryOptions
で、新たな定数SORT_BY_FRECENCY_ASCENDING
とSORT_BY_FRECENCY_DESCENDING
を使った訪問頻度順のソートが可能になりました。nsIFilePicker
にaddToRecentDocs
属性が追加されました。これは、もしユーザの「最近使用したドキュメント」リストがあれば、そのリストに選択したファイルを追加するよう指定できるものです。この属性はプライベートブラウジングモードでは無視されます。nsINavBookmarkObserver
メソッドにアイテム ID 引数を与える場合、GUID も必要となります。nsIPrefBranch.clearUserPref()
が、指定された設定が存在しない場合やユーザ設定値がない場合も、例外を投げなくなりました。その代わり、単に何もしなくなりました。nsIMemoryReporter
インタフェースで、調べたいメモリの種類 (マップ、ヒープ、その他) を指定できるようになりました。nsISHEntry
のstateData
属性がnsIStructuredCloneContainer
を返すようになりました。nsIURI
にref
属性が追加されました。これは、URI の一部の参照 (「#」以降の部分) を返すものです。また、参照メンバーなしにnsIURI
を複製できるcloneIgnoringRef()
メソッドと、参照メンバーを無視して他のnsIURI
と比較できるequalsExceptRef()
メソッドが追加されました。
新しいインタフェース
-
mozIAsyncFavicons
- ブックマークアイコン (favicon) サービスへの非同期アクセスが可能な新サービスです。
-
nsIEventSource
- 詳細は後日解説します。
-
nsIGSettingsCollection
- 詳細は後日解説します。
-
nsIGSettingsService
- 詳細は後日解説します。
-
nsIHttpUpgradeListener
-
nsIHttpChannelInternal.HTTPUpgrade()
メソッドを通じた HTTP アップグレード要求を処理するためのコールバックインタフェースです。 -
nsIStructuredCloneContainer
- 構造化された複製アルゴリズム を使ってシリアライズされたオブジェクトのためのコンテナです。
-
nsITelemetry
- パフォーマンス測定を目的とした 使用統計情報 (Telemetry) を記録とヒストグラムの生成に使用されます。バグ 649502 と バグ 585196 参照。
-
nsITimedChannel
- バグ 576006 参照。
-
nsIWebSocketListener
- バグ 640003 参照。
-
nsIWebSocketProtocol
- バグ 640003 参照。
削除されたインタフェース
以下のインタフェースは、不要となり削除された実装です。詳細はバグを参照してください。
nsIDOMDocumentEvent
(バグ 655517)nsIDOMDocumentTraversal
(バグ 655514)nsIDOMDocumentRange
(バグ 655513)IWeaveCrypto
(バグ 651596)nsIDOM3DocumentEvent
(バグ 481863)nsIDOMAbstractView
nsILiveTitleNotificationSubject
nsIPlugin
(バグ 637253)nsIPluginInstance
(バグ 637253)nsIHTMLEditRules
(バグ 633750)nsIXSLTProcessorObsolete
(バグ 649534)
その他の変更
- アプリケーションコードからの設定の使用
- 設定へ簡単にアクセスできる、新しい静的な API が実装されました。これはアプリケーションコードからのみ使用可能であり、アドオンでは使用できません。