Firefox 8 for developers
Firefox 8 は 2011 年 11 月 8 日にリリースされました。このページでは、開発者に影響する Firefox 8 の変更点をまとめています。
Web 開発者向けの変更点一覧
HTML
HTMLImageElementにcrossOriginプロパティが追加され、また<img>要素にcrossorigin属性が追加されました。(参考: バグ 664299)HTMLSelectElement.add()メソッドの引数に、インデックスが追加されました。インデックスが指す要素の前に、新たな項目が挿入されます。このメソッドはこれまで、項目のみがサポートされていました。(参考: バグ 666200)HTMLIsIndexElementコンストラクタが削除されました。Firefox 4 以前から、どの要素もこのインターフェースをインプリメントしていませんでした。- HTML5 のコンテキストメニュー機能 (contextmenu 属性) がサポートされました。この機能によって、要素固有のメニュー項目をネイティブのコンテキストメニューに追加できます。(この機能は HTML5 仕様の変更を待っている関係で、現時点では試験実装という扱いです。参考: バグ 617528)
- すべての要素に
accesskeylabel属性がサポートされました。 <input>と<textarea>にselectionDirectionアトリビュートが追加されました。また、setSelectionRange()メソッドが選択方向を指定できるようになりました。tabindex属性でフォーカス可能になった要素にフォーカスしたとき、ほとんどの要素でフォーカスリングが描画されるようになりました。
DOM
insertAdjacentHTMLメソッドが実装されました。BlobBuilderにgetFile()メソッドが追加されました。このメソッドは blob の内容をファイルとして返します。- 入れ子になった
<label>のイベントハンドリングが修正されました。 - ウィンドウ間での
window.postMessage()にFileとFileListが使えるようになりました。 element.contenteditableな領域において、見出しで改行した際、もしくはリスト編集モードから 2 回開業して抜け出す際、段落が挿入されるようになりました。(これまでは<br>でしたが、これからは<p>が挿入されます。)element.contenteditableな領域において、1 行目に均等割付を与えたときに適切な処理を妨げるバグを修正しました。element.contenteditableな領域の最初で delete もしくは backspace を押した際に、前のブロックに影響するバグを修正しました。document.getSelection()が文字列化ではなく、window.getSelection()と同じSelectionオブジェクトを返すようになりました。- HTML5 の
selectionDirectionプロパティが実装されました。編集可能テキストで選択した方向を指定できます。 HTMLMediaElementのseekableプロパティが実装されました。このプロパティは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
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 拡張が無効にされました。この拡張は非推奨とされており、またいくつかの Web サイトとの互換性を損ねていました。
WebGL
- 他のドメインからのテクスチャ読み込みが再び可能になりました。ただし、CORS によってアクセスを許可されている場合に限ります。(参考: Cross-domain textures)
- Cross-process rendering with Direct2D/Direct3D 10.
MathML
開発者ツール
consoleオブジェクトがdir()メソッドをサポートしました。個のメソッドは指定したオブジェクトについて、インタラクティブなプロパティリストを表示します。
Mozilla 開発者とアドオン開発者向けの変更点
アドオンを Firefox 8 互換にする際に必要となりそうな変更点は Updating add-ons for Firefox 8 にまとめられています。
メモ: Firefox 8 では、従来のメジャーリリースと同様に、バイナリコンポーネントをコンパイルし直す必要があります。詳しくは バイナリインタフェース をご覧ください。
XPCOM
Components.utils-
特定のコンパートメントでより簡単にオブジェクトを作成できるようにするため、新しいメソッド
createObjectIn()とmakeObjectPropsNormal()が追加されました。
その他の XPCOM 関連の変更
- You can now instantiate DOM
Fileobjects from component code by simply doing new File, instead of having to instantiate annsIDOMFiledirectly. - The
nsTPtrArrayarray type has been removed. Its functionality is now all available onnsTArray, which now offers theSafeElementAt()method when instantiated using a pointer type. See the section onSafeElementAt()in the XPCOM array guide for more information.
Workers
ChromeWorkers から XPCOM オブジェクトにアクセスできなくなりました。XPConnect は バグ 649537 によりワーカーコンテキストで無効にされています。
XUL
- A bug in
document.execCommand()that occurred when calling it on the value ofcontentDocumenthas been fixed. Since Firefox 3, this resulted in errors instead of working correctly. - Bootstrapped add-ons can now load chrome using a
chrome.manifestfile. See the section Adding user interface with a chrome.manifest for details.
JavaScript コードモジュール
ISO8601DateUtils.jsm
- このコードモジュールは削除されました。
Date.parse()が ISO 8601 形式の日付を受け付けるようになり、新しいDate.toISOString()(en-US) で ISO 形式の日付と時刻を出力できます。今後は ISO8601DateUtils.jsm の代わりにこれらのメソッドを使ってください。なお、今のところこれらは タイムゾーンに対応していません。
ビルドシステムの変更
- 以下のビルド設定オプションは削除されました。
--enable-timeline--disable-storage--necko-disk-cache
- When compiling IDL files to headers, the header file
jspubtd.his automatically included when needed. Manual inclusions ofjspubtd.hand/orjsapi.hin 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 まで (メンバーを持たない状態で) 残されます。nsIMemoryReporterのKIND_MAPPED属性が廃止され、代わりにKIND_NONHEAP属性と新しい単位型UNITS_COUNT_CUMULATIVE、UNITS_PERCENTAGEが追加されました。nsINetworkLinkServiceインタフェースにlinkType属性が追加されました。この属性で使用中のネットワーク接続の種類を参照できます。ただし、今のところすべての OS でLINK_TYPE_UNKNOWNが返ります。Android 対応は、セキュリティの懸念が報告されたため、バックアウトされました。nsISelection2インタフェースはnsISelectionPrivateインタフェースへ統合されました。nsISelection3インタフェースはnsISelectionインタフェースへ統合されました。nsISessionStartupの属性の状態が、パフォーマンス上の理由から、文字列型ではなくjsval型になりました。nsIDocShellのisActive属性は、最小化されたウィンドウではfalseを返すようになりました。
削除されたインターフェース
次のインターフェースは内部で使用されていたもので、必要がなくなったため削除されました。
nsITimelineServicensIDOMHTMLIsIndexElement
nsIWorkerFactory インターフェースも削除されました。ワーカーは Worker, ChromeWorker コンストラクタから生成可能です。
その他の変更
- ウィンドウが最小化されたとき、最小化から復帰したとき、あるいは全画面表示と通常表示の切り替えが行われたときに、
windowがsizemodechangeイベントを受け取るようになりました。 extensions.autoDisableScopes設定を使う (en-US) ことで、特定の場所からのアドオン自動インストールを無効化できるようになりました。