Firefox 11 のサイト互換性に関わる修正

今朝 Firefox 11 がリリースされました。可能な限り互換性を維持するよう開発されましたが、他のブラウザとの相互運用性や最新 Web 標準仕様への準拠のため、後方互換性に関わる修正も含まれます。そのような修正点をまとめましたので、動作検証時などにご参照ください。

ここでは後方互換性に影響し得る修正のみ解説します。その他の新機能や変更点については次のページをご覧ください。

MozBeforePaint イベントが廃止され、mozRequestAnimationFrame にコールバック関数が必須となりました

Bug 704171 – Remove the no-argument form of requestAnimationFrame

これまで mozRequestAnimationFrame を呼び出す際に発生していた MozBeforePaint イベント は廃止されました。また、これまで mozRequestAnimationFrame は引数を渡さなくても呼び出すことが可能でしたが、標準に合わせて引数 (コールバック関数) が必須となりました。

今後は、MozBeforePaint イベントを捕捉する代わりに、mozRequestAnimationFrame に渡すコールバック関数でタイムスタンプを取得してください。Firefox 11 以降、引数なしもしくは引数 nullmozRequestAnimationFrame に渡されると例外が投げられ、エラーコンソールにエラーメッセージが出力されます。

UA 文字列の Gecko バージョンからリビジョン番号が削除されました (03/15 追記)

Don’t expose the Gecko patch level (13.X.Y) in the UA string, only show the major version (13.X)

Firefox のユーザエージェント (UA) 文字列には rv:10.0.2 のような Gecko のバージョンが含まれていますが、このうち最後の数字=リビジョン番号は、Firefox 11 以降含まれなくなりました。つまり、Firefox 11.0.1 (もしリリースされた場合) では以下のように rv:11.0 となります。

Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0.1

Firefox のバージョンについても、今後リビジョン番号を外すことが検討されています。(Bug 728831)

Android 版 Firefox の UA 文字列が変更されました

Bug 671634 – Useragent should be different between phones and tablets

Android 版 Firefox のユーザエージェント (UA) 文字列 に変更が行われました。まず、タブレットの場合は Tablet、スマートフォンなどそれ以外の場合は Mobile という文字列で、端末の種類を示すトークンが追加されました。次に、コードネームを示す Fennec というトークンが削除されました。また、Gecko/ の後に付く数字が、フリーズ日ではなく Gecko のバージョンとなりました。

Mozilla/5.0 (Android; Mobile; rv:11.0) Gecko/11.0 Firefox/11.0
Mozilla/5.0 (Android; Tablet; rv:11.0) Gecko/11.0 Firefox/11.0

Android 版 Firefox はネイティブ UI へ移行中のため、Firefox 11 の正式版はリリースされず、当面は Firefox 10 が延長サポート (セキュリティアップデート) されます。ただし、プレベータ版 (Aurora) やベータ版は既に公開されていますので、いずれにしても UA 判定コードの見直しが必要となります。

サイト内で navigator のプロパティが保持される不可解な挙動が修正されました

Bug 690952 – Remove the crazy navigator preservation behavior

Firefox ではこれまで、navigator オブジェクトに拡張プロパティを設定すると、サイト (同一ドメイン) 内でページを遷移している間はブラウザ上でそのデータを保持することが可能でした。これは意図しない不可解な挙動であったため、データを保持しないよう修正が行われました。クライアント側でのデータの保存には、CookieDOM StorageIndexedDB といった別の一般的な方法を使用してください。

HTTP Content-Type ヘッダの文字コードをクオートで囲む指定が受け付けられなくなりました

Bug 700589 – HTTP content type charset parameter accepts single quotes

これまで Firefox は、Content-Type: text/plain; charset='UTF-8' のようにシングルクオートで囲まれた文字エンコーディングを受け入れていましたが、RFC に違反するため、このような不正な指定は無視されるようになりました。HTTP Content-Type ヘッダで文字エンコーディングを指定する場合、クオートで囲む必要はありません。

Geolocation API で取得できる countryCode が削除されました

Bug 704056 – remove ‘countryCode‘ from nsIDOMGeoPositionAddress.idl

Firefox では Geolocation API で取得可能な情報に国名コードが含まれていましたが、仕様書に定義されなかったため削除されました。以下のようなコードを書いている場合は、countryCode の代わりに county を使ってください。

navigator.geolocation.getCurrentPosition(function(position) {
  do_something(position.address.countryCode);
});

WebSockets API の接頭辞が外れました

Bug 695635 – tracking bug: unprefix WebSockets

プロトコル、API ともに仕様書の最新ドラフトに併せて更新され、MozWebSocketWebSockets に置き換えられました。WebSockets API を使用する場合は、接頭辞の有無にかかわらず動作するようにしてください。後方互換性のため接頭辞付き API にも対応する場合は、以下のような判別を行ってください。

var ws;
if (WebSocket) {
  ws = new WebSocket(url); // 標準
} else if (MozWebSocket) {
  ws = new MozWebSocket(url); // Firefox–10 およびそれ以前
} else {
  // WebSockets 非対応
}

パーセンテージ値による SVG ルート要素のサイズ指定は認められなくなりました

Bug 611099 – remove handling of percentages as intrinsic widths/heights (SVG height=”100%” width=”100%” defaults)

これまで Firefox では、SVG のルート要素でも width="100%" のようなパーセンテージ値による要素固有のサイズ (intrinsic dimensions) 指定が許容されていましたが、標準に合わせてそうした指定は受け付けられなくなりました。

ツールチップが表示されるまでの時間をユーザが設定できるようになりました

Bug 204786 – Add setting to change delay before tooltip shows

Web ページや Firefox の UI 要素上で補足情報として提供されるツールチップが表示されるまでの時間を、ブラウザの隠し設定 ui.tooltipDelay で変更できるようになりました。初期設定は従来通り 500 (0.5 秒) となっていますが、0 にすればマウスオーバーと同時に表示されるようになります。

ページ側で、JavaScript を使って独自のツールチップを実装している場合、ユーザの設定によっては、ブラウザが表示するネイティブのツールチップ (title 属性の値) と重なってしまう可能性があるため注意が必要です。

以前のバージョンについて

以前のバージョンについても同様に、後方互換性に関わる修正点をまとめています: