Firefox 9 開発者向けリリースノート
Firefox 9 は Windows 向けに 2011 年 12 月 20 日にリリースされました。その直後に見つかったクラッシュバグを修正した Mac 版および Linux 版のバージョン 9.0.1 は、2011 年 12 月 21 日にリリースされました。
ウェブ開発者向けの変更点一覧
>開発者ツール
- ウェブコンソールが、ログ出力メソッドで基本的な文字列置換に対応するようになりました。
- ウェブコンソールで視覚的にネストされた出力ブロックを作成できるようになり、読みやすさの助けになります。
HTML
<li>要素のvalue属性が負の値を取れるようになりました。以前は負の値は 0 に変換されていました。<audio>と<video>要素を用いるときのメディアの URI において、メディアの開始時間と終了時間を指定 できるようになりました。<input>要素と<textarea>要素が、スペルチェッカーの実行においてlang属性の値を加味するようになりました。- Android 版 Firefox において、
<input>要素にtype="file"とaccept="image/*"が指定されているとき、ユーザーがブラウザーからアプリを切り替えることなく電話のカメラを用いて写真を撮れるようになりました。 - Windows Vista スタイルの PNG ICO イメージがサポートされるようになりました。
crossorigin属性を用いて CORS アクセスのリクエストを行った画像を描画しても、不正にキャンバスを汚染しないようになりました。rowspan属性に指定できる値の最大値が 8190 から 65,534 になりました。
CSS
font-stretchプロパティに対応しました。columnsプロパティが-moz接頭辞付きでサポートされました。このプロパティはcolumn-widthとcolumn-countをまとめて記述する短縮形プロパティです。<link>要素を用いて取り込まれたスタイルシートが完全にロードされてパースされたとき (しかしまだドキュメントに適用されていない状態)、loadイベント が発生するようになりました。また、スタイルシートの処理においてエラーが起きた場合、errorイベントが発生します。text-overflow向けの 2 つの値を指定できる新しい構文を用いて、左端と右端の両方のオーバフロー設定を指定できるようになりました。
JavaScript
変更なし。
DOM
- 全画面モードの利用
-
新しい全画面 API は、ブラウザーインターフェイスを表示せずに、画面全体を用いてコンテンツを表示する方法を提供します。これは動画やゲームにとって素晴らしいものです。この API は現在実験的かつ接頭辞付きです。
Node.contains()メソッドに対応しました。このメソッドによって、あるノードが別のノードの子孫であるかを調べられます。Node.parentElement属性が実装されました。このメソッドは DOM ノードの親Element、または、親が要素ではない場合はnullを返します。- DOM Level 3 Composition イベント に対応しました。
Document.scripts属性が実装されました。このメソッドはドキュメントのすべての<script>要素のHTMLCollectionを返します。Document.queryCommandSupported()メソッドが実装されました。<body>要素でリスナーを登録できるイベントのセットは、HTML5 仕様書の最新草案と一致するように改訂されました。イベントの一覧は、DOM イベントガイドに記載されている通り、<body>でリスナーを登録できるイベントを反映しています。readystatechangeイベントは、意図通りDocumentのみで発生するようになりました。- 標準 IDL インターフェイスとして Event ハンドラーが実装されました。多くのケースで、これはコンテンツに影響を及ぼさないはずですが、例外が存在します。
- 新しいレスポンス型、
"moz-json"がXMLHttpRequestに追加されました。 その型を用いると、XMLHttpRequestに自動的に JSON 文字列を解釈させられます。つまり、この型をリクエストしたときは解釈された JSON 文字列が返るので、responseプロパティの値が解釈結果の JavaScript オブジェクトになります。 XMLHttpRequestの "progress" イベントが受け取ったデータの各チャンクに対して確実に送信されるようになりました。つまり、以前のバージョンでは受け取ったデータの最後のチャンクが "progress" イベントを発生させない可能性がありました。データの最後のチャンクを受け取ったかを判定するために "load" イベントも監視する必要はもう無くなり、"progress" イベントだけで進捗を追えるようになります。- 過去に、
nullのリスナーを指定したaddEventListener()の呼び出しは例外を投げていましたが、エラーを出すことなく、何の影響も及ぼさずに処理を戻すようになりました。 - 新しい
navigator.doNotTrackプロパティを用いることで、コンテンツ中で簡単にユーザーが do-no-track 設定を有効にしているかを判定できます。この値が "yes" ならば、ユーザーを追跡するべきではありません。 RangeオブジェクトやSelectionオブジェクトが、splitText()やnormalize()が呼び出されたときにとる挙動が仕様通りになりました。- doctype ノードに対しての
Node.ownerDocumentの値が、nullではなく、ノードを作成するために呼ばれたcreateDocumentType()上のドキュメントになるようになりました。 window.navigator.taintEnabledが削除されました。このプロパティは長年サポートされていませんでした。
ワーカー
- Firefox 8 では、blob URL で実装されたワーカーが壊れていましたが、Firefox 9 から再び動作するようになりました。
WebGL
- WebGL コンテキストの
drawingBufferWidthおよびdrawingBufferHeight属性に対応するようになりました。
MathML
ネットワーク
- JavaScript の型付き配列(つまり
ArrayBufferオブジェクトのコンテンツ)を XMLHttpRequest を使用して送信することが可能になりました。 - WebSocket 接続で、有効な UTF-8 データフレーム内で文字以外のデータである場合、受信に失敗するのではなく、受信できるようになりました。
- XSLT リクエストの HTTP
Acceptヘッダーは、分かりやすさのため*/*に変更されました。 XSLT の取得は常に*/*に代替していたため、初期リクエストを簡略化するのは意味があります。 - サーバーが
301 Moved Permanentlyまたは307 Temporary Redirectコードを使用して、ユーザーをjavascript:URI にリダイレクトしようとすると、実際にリダイレクトされる代わりに「接続エラー」が発生するようになりました。これにより、特定の種類のクロスサイトスクリプティング攻撃を防ぐことができます。 Content-Dispositionが空の状態で提供されたコンテンツは、以前はContent-Dispositionが "attachment" であるかのように扱われていました。これは常に期待通りに動作するとは限りませんでした。これらは、Content-Dispositionが "inline" であるかのように処理されるようになりました。- ディスクキャッシュ内のアイテムのデフォルト最大サイズが 50MB に増加されました。以前は 5MB 以内のアイテムのみがキャッシュされていました。
Mozilla 開発者とアドオン開発者向けの変更点
Firefox 9 でアドオンが取得できるようにするために、ある変更が必要となる場合があります。その概要については、Firefox 9 向けアドオンの更新を参照してください。
XUL
<xul:tab>要素は、これでセッションストアサービスによるタブの復元処理中であることを示すpending属性(値:true)を持つようになりました。テーマにおけるタブのスタイル設定に使用できます。処理待ち状態ではないタブにはこの属性は存在しません。<xul:tab>要素は、unread属性を持つようになりました。この属性の値は、タブが前回アクティブだった時点から変更された場合、または現在のセッションを始める以降選択されていない場合にtrueとなります。未読でないタブにはこの属性は存在しません。- DOM のドラッグ&ドロップ操作において、
<xul:panel>をドラッグ用画像として使用するようになりました。これにより、XUL コンテンツのドラッグ&ドロップに標準のドラッグ&ドロップ API を利用することができます。 <xul:notificationbox>要素のappendNotificationメソッドでは、通知ボックスに関連する興味深いイベントが発生した際に呼び出されるコールバックを指定できるようになりました。現在、唯一のイベントは "removed" であり、これはボックスがウィンドウから除去されたことを指示します。
JavaScript コードモジュールの変更
FileUtils.jsmは、パス名で指定されたファイルを表すnsIFileオブジェクトを返すFileコンストラクターを持つようになりました。
サービスの変更
- サイト別設定サービスがプライベートブラウジングモードを考慮するようになりました (バグ 679784 参照)。
NSPR
- NSPR は "append" モジュールを持つようになり、既存ログの出力終わりに新しいデータを追加できるようになりました。
インターフェイスの変更
削除されたインターフェイス
nsIGlobalHistory3は、Places および DocShell コードの整理過程で除去されました。
その他のインターフェイスの変更
nsISoundインターフェイスに新しい定数EVENT_EDITOR_MAX_LENが導入され、テキスト欄に入力された文字数が制限を超えた場合にシステム効果音を鳴らせるようになりました。今のところ、これは Windows のみで使用されています。nsIScriptError2インターフェイスに新しいプロパティtimeStampとinnerWindowIDが追加されました。また、initWithWindowID()メソッドが、外部ウィンドウ ID の代わりに内部ウィンドウ ID を受け取るようになりました。nsIBidiKeyboard.haveBidiKeyboards属性が追加されました。これは、OS に 1 つ以上の双方向 (LTR もしくは RTL) のキーボードがインストールされているかどうかを判別できるものです。- 新しい
nsIEditor.isSelectionEditable属性により、現在の選択範囲のアンカーが編集可能かどうかを判定できます。これにより、文書の特定部分のみが編集可能な場合に、現在の選択範囲が編集可能な区間内にあるかどうかを確認できるようになり、対応が役立つようになります。 nsIBrowserHistory.registerOpenPage()およびnsIBrowserHistory.unregisterOpenPage()メソッドは、Places システムのパフォーマンス改善の一環として除去されました。代わりにmozIPlacesAutoCompleteの対応するメソッドを使用することができます。nsIDOMWindowUtils.wrapDOMFile()メソッドが追加されました。このメソッドは、指定されたnsIFileに対して DOM のFileオブジェクトを返します。nsIChromeFrameMessageManager.removeDelayedFrameScript()メソッドが追加され、遅延読み込みスクリプトを削除することに対応しました。起動時に自身で読み込んだアドオンは、終了時にこれを呼び出して、遅延読み込みフラグを設定してnsIChromeFrameMessageManager.loadFrameScript()で読み込まれたスクリプトをすべて除去されるように設定する必要があります。これはアドオン向けにbrowser.messageManager.removeDelayedFrameScript()として公開されています。nsIAppStartupインターフェイスには新しいinterrupted属性が追加されました。これにより、起動プロセスがインタラクティブなプロンプトによってこの点で中断されたかどうかを判別できます。例えば、パフォーマンス評価中に起動時間を計測する際、中断されたセッションの数値を除外できるようにするなど、有用な場合があります。nsIEditorSpellCheckインターフェイスは、サイトごとのスペルチェッカー辞書の選択に対応するよう改訂されました。
IDL パーサー
IDL パーサーから、これまで完全に実装されたことのなかったユニークポインターの概念が削除されました。
ビルドシステムの変更
- スタンドアロンの XPConnect をビルドするための
--enable-application=standaloneオプションは除去されました。いずれにせよ、2007 年以降動作していませんでした。 - Necko および Transformiix XSLT スタンドアロンのビルドに対する対応が除去さ れました。
--enable-application=networkまたは--enable-application=content/xsltは使用できなくなりました。 - ビルドシステムは、
MOZCONFIG環境変数で.mozconfigのパスを上書きしない限り、$topsrcdir/.mozconfigまたは$topsrcdir/mozconfig以外の場所では.mozconfigを見るようになりました。 - SDK では
xpidlユーティリティがpyxpidlをつけて置き換えました。
その他の変更
- スペルチェッカーは、チェック対象となる単語の長さについて、以前任意に設定されていた 130 文字の制限を廃止しました。この制限は、スペルチェッカーで発生していたクラッシュを防ぐために導入されていましたが、基盤の不具合は既に修正された状態にあります。
- "JavaScript-navigator-property" カテゴリーを使用することで、
window.navigatorオブジェクトに機能を追加するためのコンポーネントを追加することができるようになりました。