Firefox 8 for developers
Firefox 8 は 2011 年 11 月 8 日にリリースされました。このページでは、開発者に影響する Firefox 8 の変更点をまとめています。
ウェブ開発者向けの変更点一覧
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 画像の拡大縮小 が背景画像においても適切に処理されるようになりました。
Network
WebSocket
- WebSocket オブジェクトの
send()
メソッドが不適切に真偽値を返していた挙動が修正されました。 WebSocket
オブジェクトのclose()
メソッドが現在の標準草案に従ったものになりました。また、クローズイベントが適切にCloseEvent
インターフェイスを利用するようになりました。- The
WebSocket
オブジェクトの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
開発者ツール
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 annsIDOMFile
directly. - The
nsTPtrArray
array 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 ofcontentDocument
has been fixed. Since Firefox 3, this resulted in errors instead of working correctly. - Bootstrapped add-ons can now load chrome using a
chrome.manifest
file. See the section Adding user interface with a chrome.manifest for details.
JavaScript コードモジュール
ISO8601DateUtils.jsm
- このコードモジュールは削除されました。
Date.parse()
が ISO 8601 形式の日付を受け付けるようになり、新しいDate.toISOString()
で ISO 形式の日付と時刻を出力できます。今後は 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 ofjspubtd.h
and/orjsapi.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 まで (メンバーを持たない状態で) 残されます。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
を返すようになりました。
削除されたインターフェイス
次のインターフェイスは内部で使用されていたもので、必要がなくなったため削除されました。
nsITimelineService
nsIDOMHTMLIsIndexElement
nsIWorkerFactory
インターフェイスも削除されました。ワーカーは Worker
, ChromeWorker
コンストラクターから生成可能です。
その他の変更
- ウィンドウが最小化されたとき、最小化から復帰したとき、あるいは全画面表示と通常表示の切り替えが行われたときに、
window
がsizemodechange
イベントを受け取るようになりました。 extensions.autoDisableScopes
設定を使う ことで、特定の場所からのアドオン自動インストールを無効化できるようになりました。