Firefox 8 for developers

Firefox 8 は 2011 年 11 月 8 日にリリースされました。このページでは、開発者に影響する Firefox 8 の変更点をまとめています。

ウェブ開発者向けの変更点一覧

HTML

  • HTMLImageElementcrossOrigin プロパティが追加され、また <img> 要素に crossorigin 属性が追加されました。(参考: バグ 664299)
  • HTMLSelectElement.add() メソッドの引数に、インデックスが追加されました。インデックスが指す要素の前に、新たな項目が挿入されます。このメソッドはこれまで、項目のみがサポートされていました。(参考: バグ 666200)
  • HTMLIsIndexElement コンストラクターが削除されました。Firefox 4 以前から、どの要素もこのインターフェイスをインプリメントしていませんでした。
  • HTML5 のコンテキストメニュー機能 (contextmenu 属性) がサポートされました。この機能によって、要素固有のメニュー項目をネイティブのコンテキストメニューに追加できます。(この機能は HTML5 仕様の変更を待っている関係で、現時点では試験実装という扱いです。参考: バグ 617528)
  • すべての要素に accesskeylabel 属性がサポートされました。
  • <input><textarea>selectionDirection アトリビュートが追加されました。また、setSelectionRange() メソッドが選択方向を指定できるようになりました。
  • tabindex 属性でフォーカス可能になった要素にフォーカスしたとき、ほとんどの要素でフォーカスリングが描画されるようになりました。

DOM

  • insertAdjacentHTML メソッドが実装されました。
  • BlobBuildergetFile() メソッドが追加されました。このメソッドは blob の内容をファイルとして返します。
  • 入れ子になった <label> のイベントハンドリングが修正されました。
  • ウィンドウ間での window.postMessage()FileFileList が使えるようになりました。
  • element.contenteditable な領域において、見出しで改行した際、もしくはリスト編集モードから 2 回開業して抜け出す際、段落が挿入されるようになりました。(これまでは<br>でしたが、これからは<p>が挿入されます。)
  • element.contenteditable な領域において、1 行目に均等割付を与えたときに適切な処理を妨げるバグを修正しました。
  • element.contenteditable な領域の最初で delete もしくは backspace を押した際に、前のブロックに影響するバグを修正しました。
  • document.getSelection() が文字列化ではなく、window.getSelection() と同じ Selection オブジェクトを返すようになりました。
  • HTML5 の selectionDirection プロパティが実装されました。編集可能テキストで選択した方向を指定できます。
  • HTMLMediaElementseekable プロパティが実装されました。このプロパティは TimeRanges を返します。
  • HTMLMediaElement.preload 属性が適切な enumerated value を反映するようになりました。
  • crossOrigin プロパティ に不正な値が使われた場合は "Anonymous" と扱われるようになりました。
  • window.navigator.cookieEnabled が、サイトごとの設定で Cookie の設定が上書きされている場合においても正しい情報を返すようになりました。

JavaScript

  • 引数なしで呼び出された RegExp.exec(), RegExp.test() が文字列 "undefined" にマッチするようになりました。
  • 引数なし、もしくは undefined をとり呼び出された String.search(), String.match() が空文字列にマッチするようになり、つまりはすべての文字列にマッチするようになりました。
  • ウォッチリストのサポートが行われました。ウォッチリストは (非標準の) watch() メソッドおよび unwatch() メソッドから利用できます。

CSS

  • <resolution> が仕様に従い、<integer> だけでなく <number> もサポートしました。
  • hyphens 利用時のハイフネーション規則がより多くの言語でサポートされました。
  • background-size の処理が仕様により従ったものになりました。
  • これまで Quriks モードでの text-decoration は、太い線で描画され、また子孫要素のテキストに沿って描画されていました。Firefox 8 からは、標準モードにより近い表示になります。
  • 要素の水平方向への配置がより仕様に沿った実装になりました。この件に関するドキュメントを準備中ですが、今は バグ 682780 のコメント 23 をお読みください。
  • SVG 画像の拡大縮小 (en-US) が背景画像においても適切に処理されるようになりました。

Network

  • ダブルクォートが RFC 2231/RFC 5987 エンコーディングの区切り子として利用できなくなりました。これはそれらの RFC への準拠によるものです。
  • MIME ヘッダフィールドのパーサは、引数に「=」が含まれない Content-Disposition ヘッダを受け付けなくなりました。
  • JavaScript が無効な環境ではスクリプトファイルをダウンロードしないようになりました。
  • SSL 2.0 のサポートが打ち切られました。

WebSocket

  • WebSocket オブジェクトの send() (en-US) メソッドが不適切に真偽値を返していた挙動が修正されました。
  • WebSocket (en-US) オブジェクトの close() (en-US) メソッドが現在の標準草案に従ったものになりました。また、クローズイベントが適切に CloseEvent (en-US) インターフェイスを利用するようになりました。
  • The WebSocket (en-US) オブジェクトの extensions アトリビュートがサポートされました。
  • WebSocket コンストラクターがひとつのプロトコル文字列だけではなく、プロトコルの配列もサポートするようになりました。
  • SSL と 非 SSL の混在が WebSocket で認められなくなりました。
  • WebSocket の接続エラーが onerror ハンドラをトリガーするようになりました。
  • WebSocket API が最新版の仕様に追従しました。(参考: バグ 674890, バグ 674527, バグ 674716)
  • WebSocket の deflate-stream 拡張が無効にされました。この拡張は非推奨とされており、またいくつかのウェブサイトとの互換性を損ねていました。

WebGL

  • 他のドメインからのテクスチャ読み込みが再び可能になりました。ただし、CORS によってアクセスを許可されている場合に限ります。(参考: Cross-domain textures)
  • Cross-process rendering with Direct2D/Direct3D 10.

MathML

  • <math> 要素に displaystyle 属性のサポートが追加されました。
  • <mtable> 要素の align において、負の行数 の解釈が修正されました。

開発者ツール

  • console オブジェクトが dir() メソッドをサポートしました。個のメソッドは指定したオブジェクトについて、インタラクティブなプロパティリストを表示します。

Mozilla 開発者とアドオン開発者向けの変更点

アドオンを Firefox 8 互換にする際に必要となりそうな変更点は Updating add-ons for Firefox 8 にまとめられています。

メモ: Firefox 8 では、従来のメジャーリリースと同様に、バイナリコンポーネントをコンパイルし直す必要があります。詳しくは バイナリインターフェイス をご覧ください。

XPCOM

Components.utils

特定のコンパートメントでより簡単にオブジェクトを作成できるようにするため、新しいメソッド createObjectIn()makeObjectPropsNormal() が追加されました。

その他の XPCOM 関連の変更

  • You can now instantiate DOM File objects from component code by simply doing new File, instead of having to instantiate an nsIDOMFile directly.
  • The nsTPtrArray array type has been removed. Its functionality is now all available on nsTArray, which now offers the SafeElementAt() method when instantiated using a pointer type. See the section on SafeElementAt() in the XPCOM array guide for more information.

Workers

ChromeWorkers から XPCOM オブジェクトにアクセスできなくなりました。XPConnect は バグ 649537 によりワーカーコンテキストで無効にされています。

XUL

JavaScript コードモジュール

ISO8601DateUtils.jsm

ビルドシステムの変更

  • 以下のビルド設定オプションは削除されました。
    • --enable-timeline
    • --disable-storage
    • --necko-disk-cache
  • When compiling IDL files to headers, the header file jspubtd.h is automatically included when needed. Manual inclusions of jspubtd.h and/or jsapi.h in IDL files that use jsval or [implicit_jscontext] are no longer necessary.

クロームの登録

  • Gecko のバージョン互換性を指定する platformversion フラグが chrome.manifest でも使えるようになりました。

インターフェイスの変更

  • mozIJSSubScriptLoader.loadSubScript() メソッドが、可能な場合、起動キャッシュからスクリプトを読み込むようになりました。
  • nsIAccessNode インターフェイスから ownerWindow 属性が削除されました。
  • nsIDOMStorageWindow インターフェイスは nsIDOMWindow インターフェイスへ統合されました。
  • nsIDOMWindowInternal インターフェイスの全メンバーが nsIDOMWindow インターフェイスへ移動されました。インターフェイス自体は互換性維持のため Firefox 9 まで (メンバーを持たない状態で) 残されます。
  • nsIMemoryReporterKIND_MAPPED 属性が廃止され、代わりに KIND_NONHEAP 属性と新しい単位型 UNITS_COUNT_CUMULATIVEUNITS_PERCENTAGE が追加されました。
  • nsINetworkLinkService インターフェイスに linkType 属性が追加されました。この属性で使用中のネットワーク接続の種類を参照できます。ただし、今のところすべての OS で LINK_TYPE_UNKNOWN が返ります。Android 対応は、セキュリティの懸念が報告されたため、バックアウトされました。
  • nsISelection2 インターフェイスは nsISelectionPrivate インターフェイスへ統合されました。
  • nsISelection3 インターフェイスは nsISelection インターフェイスへ統合されました。
  • nsISessionStartup の属性の状態が、パフォーマンス上の理由から、文字列型ではなく jsval 型になりました。
  • nsIDocShellisActive 属性は、最小化されたウィンドウでは false を返すようになりました。

削除されたインターフェイス

次のインターフェイスは内部で使用されていたもので、必要がなくなったため削除されました。

  • nsITimelineService
  • nsIDOMHTMLIsIndexElement

nsIWorkerFactory インターフェイスも削除されました。ワーカーは Worker, ChromeWorker コンストラクターから生成可能です。

その他の変更

  • ウィンドウが最小化されたとき、最小化から復帰したとき、あるいは全画面表示と通常表示の切り替えが行われたときに、windowsizemodechange イベントを受け取るようになりました。
  • extensions.autoDisableScopes 設定を使う (en-US) ことで、特定の場所からのアドオン自動インストールを無効化できるようになりました。

参考