Firefox 16 のサイト互換性に関わる修正のまとめ

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

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

この一覧に漏れや間違いがあるときはコメント欄でお知らせください。

CSS

多くの CSS プロパティから接頭辞が外れました

CSS アニメーショントランジショントランスフォーム の各プロパティから -moz- ベンダー接頭辞が外れました。また グラデーション の各関数と calc からも接頭辞が外れました。グラデーションについては、接頭辞の有無で構文が大幅に変わっていることに注意してください

接頭辞付きのプロパティや関数を使用する場合は、前方互換性のため、接頭辞なしの形式も必ず併記するようにしましょう。今後、そうした配慮がなされていない CSS は適用されなくなる可能性があります。

トランジションとアニメーションの継続時間に指定した負の値は無視されるようになりました

transition-durationanimation-duration の各プロパティに負の値を指定した場合、従来は初期値の 0s と解釈されていましたが、今後は不正な値として見なされ、宣言自体が無視されます。

matrix() に指定した長さの値は無視されるようになりました

トランスフォーム関数matrixmatrix3d について、Firefox はこれまで誤って数値だけでなく長さの値 (例えば 10px のように単位の付いた値) を受け入れていました。この挙動が仕様に合わせて修正され、長さの値が指定された場合はパースエラーを返すようになりました。

ボーダーによってテーブルセルの高さが変わる問題が修正されました

これまで、テーブルセル (td 要素) の上下に borderpadding が指定されると、その分セルの高さが縮まって表示されていました。Firefox 16 では、CSS 標準に従うよう、このレイアウト問題が修正されています。実際の例はバグに添付されたテストケースを参照してください。

メディアクエリの解像度が CSS ピクセル単位で扱われるようになりました

CSS3 メディアクエリの仕様が更新され、解像度の単位である dpidpcmdppx が、物理単位ではなく CSS ピクセル単位のドットに相当するようになりました。Firefox の実装もこれに合わせて更新されました。

DOM

いくつかの API から接頭辞が外れました

IndexedDB から接頭辞が外れました。今後は mozIndexedDB ではなく標準の indexedDB オブジェクトを使用できます。また、バッテリー、バイブレーターの各 API についても接頭辞が外れています。

Microdata API が実装されました (10/15 追記)

HTML5 の Microdata DOM API が実装され、documentgetItems プロパティが、elementitemIditemPropitemRefitemScopeitemTypeitemValueproperties プロパティが追加されました。

Six Apart 社から提供されている Movable Type がこの影響を受けたことが確認されています。各要素に itemId という独自プロパティを付加していたために一部機能が正常に動作しなくなり、急遽パッチが公開されています。

各要素に独自データを付加したい場合は、独自プロパティの代わりに element.dataset を使う方法が安全でしょう。文字列型以外のデータも保存できる setUserData/getUserData も Firefox には実装されていますが、これらは 廃止予定 であり、WeakMap で代用可能とのことです。

java オブジェクトが廃止されました

window.javawindow.packages の各グローバル DOM オブジェクトが廃止されました。これらのオブジェクトはほとんど文書化されておらず、実際に使われることは非常にまれかと思います。この変更は Firefox 15 で行われる予定でしたが、既存の拡張機能との互換性を保つためバックアウトされていました

SVG と XPath の例外の種類が DOMException に統一されました

SVGExceptionXPathException は削除され、DOMException に置き換えられました。

SmsRequestDOMRequest に置き換えられました

SmsRequest は、より一般的で同じ属性とイベントハンドラを提供する DOMRequest に置き換えられました。

select.size に負の値を指定した場合の挙動が変わります

select 要素の size プロパティに負の値を与えた場合、従来は例外が投げられていましたが、今後は 0 と見なされます。

CSSNameSpaceRule.type が正しい値を返すようになりました

CSSNameSpaceRuletype プロパティが、CSSRule.UNKNOWN_RULE (0) ではなく CSSRule.NAMESPACE_RULE (10) を返すよう修正されました。

mozApps.installPackage が無効化されました

Apps API の installPackage 関数は、機能の実装が完了するまで削除されることになりました。

その他

MD5 アルゴリズムで署名された証明書は受け入れられなくなります

MD5 ハッシュアルゴリズムは安全でないことから、Firefox 16 以降無効化する措置が取られました。MD5 アルゴリズムで署名された SSL 証明書を使用しているサイトを Firefox で開くとエラー画面が表示されます。便宜的に、ユーザがこのエラーを無視することも可能となっています

なお Thunderbird でも同様に、メールサーバがそうした証明書を使用している場合はエラーとなり、メッセージの送受信を行えなくなります。ただし Thunderbird 16 では何もエラーメッセージは表示されません。

ユーザエージェント文字列にセキュリティパッチレベルのバージョンまで含まれなくなります

この変更により、例えば予定外の Firefox 16.0.1 がリリースされた場合も、ユーザエージェント (UA) 文字列内のバージョンは 16.0.1 ではなく 16.0 とだけ表記されます。

半角空白の後、全角空白の前で行が折り返されるようになりました

実際の日本語のページについて「Firefox のみレイアウトが崩れる」と指摘があった問題です。他のブラウザと同様に、全角空白の前で行が折り返されるよう修正が行われました。

WebSockets の接続切断処理が最新仕様に合わせて更新されました

コードから close 関数が呼び出された際の切断処理中に onerroronclose イベントが発生しないようにするなど、最新の WebSockets 仕様に合わせて実装が更新されました。

execCommand() はコマンドが無効の場合 false を返すようになりました

リッチテキストエディタexecCommand 関数が呼び出された際に、コマンドが有効でなければ正しく false を返すようになりました。これまでは常に true が返っていました。

メディアを巻き戻したときの played プロパティの値が修正されました

video/audio 要素を再生し、巻き戻した後に played プロパティの値を取得すると、巻き戻した位置が返っていました。再生が終わった位置を正しく返すよう実装が修正されました。

リグレッション

Firefox 16 で発生したことが判明しているリグレッションのうち、サイト互換性に影響すると思われるバグは以下の通りです。

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

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

4 件のコメント

  1. Masahiro YAMADA :

    従来可能だった window[フォーム名] での FORM要素への参照取得が Firefox 16 から undefined を返すようになったようです。 window.document[フォーム名] は従来通りFORM要素への参照が取得されるようですが。

    1. Kohei Yoshino :

      確認します。

    2. Kohei Yoshino :

      手元でテストしてみましたが、Firefox 15、14、10 でも window[フォーム名] は undefined を返しました。再現するテストケースがあれば提供いただけると助かります。

    3. Masahiro YAMADA :

      単純なテストケースでは10.0.8ESRでも undefined になるのを確認しました。
      テストケースでの動作から考えると、これまで参照を取得できる場合があったこと
      自体がバグだったようですね。バグを直したということで納得しておきます。