Firefox 17 サイト互換性情報

Firefox 17 が にリリースされました。可能な限り互換性を維持しつつ開発されましたが、他のブラウザとの相互運用性や最新 Web 標準仕様への準拠のため、後方互換性に関わる変更も含まれます。そのような変更点をまとめましたので、サイトやアプリケーションの動作検証時にご活用ください。

ここでは Web サイトの後方互換性に影響し得る変更のみ解説します。その他の新機能や変更点については以下のドキュメントをご覧ください。

CSS

イメージマップがインライン要素として表示されるようになりました

イメージマップ (map 要素) は従来、Firefox の Standards Compliant (標準準拠) モードでは ブロック要素 として表示されていましたが、HTML5 の仕様に合わせて インライン要素 に変更されました。Quirks (後方互換) モード や他のブラウザでは元々インライン要素として表示されていました。従来通りブロック要素として表示したいときは、スタイルシートに map { display: block; } と記述する必要があります。

色や長さに関する誤記の許容が特定のプロパティに制限されました

Firefox の Quirks (後方互換) モード では、ハッシュの付いていないカラーコード (例えば #666666 の誤記である 666666) や、単位の付いていない長さ (例えば 10px の誤記である 10) がショートハンド以外のプロパティの値に見つかった場合、CSS パーサによって自動的に補正されます。CSS3 の仕様に合わせて、特定のプロパティに限ってそうした誤記を許容する実装に変更されました。

例えばハッシュなしカラーコードの場合、許容範囲は background-colorborder-colorborder-top-colorborder-right-colorborder-bottom-colorborder-left-colorcolor プロパティの値のみであり、backgroundborder など他のプロパティの値に含まれる誤記は補正されません。いずれにしても誤記は自分自身で修正するようにしましょう。

DOM

ページ遷移時のイベントでダイアログを表示できなくなりました

beforeunloadunloadpagehide の各イベントが発生したときに、alertconfirm あるいは prompt 関数を使ってダイアログを表示するスクリプトが書かれていても無視されるようになりました。これは、悪意を持ったサイトが、タブを閉じたり、再読み込みしたり、別のページへ移動したりする際に無限ループを発生させ、ブラウザを終了できなくするといった DoS 攻撃を防ぐための措置です。

XHR.getAllResponseHeaders() の値に含まれる改行コードが変わりました

XMLHttpRequestgetAllResponseHeaders 関数は、レスポンスヘッダを改行で分割した文字列として返します。Firefox の実装では改行コードが LF (\n) となっていましたが、仕様に合わせて CR+LF (\r\n) を使うよう修正されました。ヘッダ情報を読み取って何らかの処理をしている場合は注意が必要です。

XHR.setRequestHeader() で投げられる例外が明確化されました

XMLHttpRequestsetRequestHeader 関数で投げられる例外コードは、従来どんなエラーであっても NS_ERROR_FAILURE となっていました。エラーを適切に区別できるよう、仕様で定義された 2 種類の例外コード、NS_ERROR_DOM_INVALID_STATE_ERRNS_ERROR_DOM_SYNTAX_ERR が使われるようになりました。

XHR.onuploadprogress が廃止されました

XMLHttpRequestonuploadprogress 属性は標準化されず、Firefox 14 以降非推奨となり エラーコンソールに警告が表示されていました。Firefox 17 以降では使用できません。

HTMLMediaElement.src の種類が変更されました

従来 HTMLMediaElementsrc プロパティの値はメディアストリームのオブジェクトとなっていました。標準化にあたって、src プロパティはメディアの URL 文字列とし、オブジェクトは別途新たな srcObject プロパティに含めるという提案を Mozilla が行い、Firefox の実装はそれにそった形に変更されました。今のところ srcObject は接頭辞付きの mozSrcObject となっています。

割り当て済みイベントを初期化しようとしても例外が投げられなくなりました

dispatchEvent で割り当てられたイベントに対して initEvent を実行すると、従来は例外が投げられていました。他のブラウザと同様に、何もしないという挙動に変更されました。

コンストラクタなしのインタフェースを作成しようとすると例外が投げられるようになりました

(要解説)

Web IDL ディクショナリ (連想配列) の実装が最新の仕様に合わせて更新されました

(要解説)

Archive API が初期設定で無効化されました ( 追記)

Firefox 17 で ArchiveReaderArchiveRequest として試験実装された Archive API は、誤って接頭辞なしで投入されていました。この API は現時点でまだ仕様が完成しておらず不安定なことから、設定によって無効化する変更が行われました。試したい場合は dom.archivereader.enabled の値を true にする必要があります。

JavaScript

E4X が無効化されました

ECMAScript for XML (E4X) は非推奨となり、Firefox 17 で無効化されました。隠し設定 javascript.options.xml.content の値を true に変更すれば有効になりますが、Firefox 18 Firefox の近い将来のバージョン (当初 Firefox 18 とされていましたが現状未定) では実装そのものが 完全に削除 される予定です。

JavaScript として扱われる MIME タイプが増えました

Firefox では、text/javascripttext/ecmascriptapplication/javascriptapplication/ecmascriptapplication/x-javascript 以外の MIME タイプが設定されたスクリプトは JavaScript と見なされていませんでした。例えば <script type="text/jscript"> ... </script> のようなコードは、Firefox の以前のバージョンでは動作しません。Firefox 17 では、HTML5 草案に合わせ、text/jscript を含む様々な MIME タイプに対応しました。これにより、従来 Firefox で実行されなかったスクリプトが実行されるようになり、思わぬ不具合を生む可能性があるかもしれません。

 

ネットワーク

UA 文字列内の Gecko ビルド日付がバージョン番号に置き換えられました

ユーザエージェント (UA) 文字列のうち、Firefox のレンダリングエンジンである Gecko の表記が変わりました。Firefox 4 以降固定されているビルド日時がバージョン番号に置き換えられました。このため Gecko/20100101Gecko/17.0 となります。ユーザエージェント文字列からブラウザのバージョン判別を行っている場合は注意が必要です。

11/30 更新: この変更はサイト互換性に及ぼす影響が大きいと思われることから、Firefox 17.0.1 でバックアウトされました

サイト固有の UA 文字列設定が可能になりました

米国 AOL の Web メールサービスで、ユーザエージェント (UA) 文字列に古いビルド日付 (Gecko/20100101) が含まれていないと、機能が制限されたベーシック画面に Firefox がフォールバックされてしまうという 問題 が報告されています。Mozilla がサイト運営者に連絡を取って修正を依頼しましたが反応がないため、当面の回避策として Firefox 側でサイトごとに UA 文字列を上書きできる仕組みを実装し、それを aol.com だけに適用する措置を取りました。具体的には、隠し設定 general.useragent.override.aol.com の値を Gecko/[^ ]*#Gecko/20100101 としています。

Firefox の UA 文字列 は、Firefox 4 を皮切りに、時々細かな変更が行われています。ブラウザ判別を行うのであれば、今後も変わる可能性のある UA 文字列を確認するのではなく、特定の機能 (オブジェクトや関数など) が実装されているかどうかを確認する「機能判別」の方法を採用することをお勧めします。

10/12 更新: AOL 側で修正が行われたため、この隠し設定は削除されました。UA 文字列を上書きする仕組み自体は残っています。

11/22 更新: 一部のオンラインバンクWeb ページ作成ツール について、サイト固有の問題を回避するためにこの仕組みが使われています。

HTTP Keep-Alive を無効化する設定が削除されました

Firefox では HTTP Keep-Alive (持続的接続) が有効になっており、何らかの不具合が生じた場合は隠し設定 network.http.keep-alive で無効化することが可能となっています。Firefox 17 ではこの設定が廃止され、Keep-Alive が常時有効となります。

セキュリティ

特権管理機能が無効化されました

Firefox 12 以降非推奨となっている 特権管理機能 (JavaScript 拡張仕様 netscape.security.PrivilegeManager.enablePrivilege) が無効化されました。隠し設定 security.enablePrivilege.enable_for_tests の値を true に変更すればこの機能をテストできますが、当然のことながら推奨されません。実際に特権が必要な場面ではアドオンなどの代替策を検討してください。

なお、ブラウザ判別にまだ netscape.security オブジェクトを使用しているサイトが確認されたため、一時的にこのオブジェクトを復活させる措置 を取っています。今後ブラウザ判別には別の方法を使用してください。

Document Tags and Contributors

Contributors to this page: omasanori, ethertank, Yoshino
最終更新者: omasanori,