Firefox 3 のためのウェブアプリケーションの更新

来たる Firefox 3 では、あなたが利用したいであろう新機能と同様に、ウェブサイトやウェブアプリケーションに影響するであろう多くの変更が施されています。この記事は Firefox 3 を最大限活用するためにあなたのコンテンツを更新する作業の出発点となるでしょう。

DOM の変更

外部の文書から移入したノードは、現在の文書に挿入する前に document.importNode() を使ってクローンを作る (あるいは document.adoptNode() を使って取り込む) べきです。Node.ownerDocument 問題の詳細については W3C DOM FAQ を参照してください。

Firefox では現在このルールを強制していません。Firefox 3 の開発中には強制していた時期もありましたが、このルールを強制すると多くのサイトが機能しなくなってしまうため取りやめになりました。将来的な互換性を高めるため、ウェブ開発者にはこのルールに従ってコードを修正することを推奨します。

HTML の変更

文字セット継承に対する変更

Firefox 3 では、frame や iframe が親の文字セットを継承できてしまうセキュリティ上のバグが修正されています。これにより、場合によっては問題が起こる可能性があります。フレームが親の文字セットを継承できるのは、フレームと親がともに同じサーバーから読み込まれている場合に限られます。もしあなたのページが、他のサーバーから読み込まれたフレームが同じ文字セットを継承することを前提に作られているなら、フレームの HTML を更新して文字セットを明確に指定するべきです。

SCRIPT 要素に対する変更

text/html 文書における <script> 要素は、たとえ 間に内容を含めなくても、HTML 4 文書における閉じタグである </script> を必要とするようになりました。以前のバージョンの Firefox では、以下のようにすることが可能でした。

html
<script … />

マークアップは HTML の仕様に従わなければならず (それが実際に HTML である場合)、以下のように実際に閉じなければならなくなりました。

html
<script …></script>

これは互換性とセキュリティの両方を改善します。

CSS の変更

em、ex 単位に基づいた font-size に対する変更

em、ex 単位での font-size の値はユーザーの最小フォントサイズ設定の影響を受けていました。例えば、フォントが最小フォントサイズより大きく表示されるなら、em と ex 単位で font-size を指定されたフォントは最小フォントサイズ設定に従って拡大されるでしょう。これは割合に基づいたフォントサイズの振る舞いと矛盾していました。

em 及び ex 単位での font-size の値は、ユーザーの最小フォントサイズの影響を受けることなく、"意図されたフォントサイズ" に基づくようになりました。言い換えれば、フォントサイズは常にデザイナーの意図に従って計算され、その後に最小フォントサイズのための調整が行われるようになったということです。

Firefox バグ 434718、特にその 添付ファイル 322943 をデモとしてを参照してください (違いを見るためには、最小フォントサイズ >= 6 で見る必要があります)。 (これはバグテンプレートについて言っているのではありません。このリンクは Bugzilla のバグではなく、Bugzilla の添付ファイルを指しています。添付ファイルの番号をバグ番号として使用すると、意味を成しません。) Firefox 2 では、em ベースのフォントサイズが最小フォントサイズに「跳ね返る」ため、2 つのボックスカスケードの動作が異なります)。

セキュリティに関する変更

クロームへのアクセス

Firefox のこれまでのバージョンでは、ウェブページは chrome:// プロトコルを使ってクロームからスクリプトや画像を読み込むことが可能でした。特に、このような仕様によって、アドオンがインストールされているかどうかをサイトが判別することが可能でした。これは、ブラウザーにセキュリティ機能を追加するアドオンを回避して、ユーザーのセキュリティを侵害するのに利用される恐れがありました。

Firefox 3 では、ウェブコンテンツは chrome://browser/ および chrome://toolkit/ 以下にあるコンテンツに限ってアクセスできます。これらのファイルはウェブコンテンツからアクセスされることを意図したものです。他のクロームコンテンツはすべて、ウェブからのアクセスが禁止されます。

ただし、拡張機能が、内部のコンテンツをウェブからアクセス可能にする方法があります。その方法とは、以下のように、chrome.manifest ファイルに特別なフラグを指定することです。

content mypackage location/ contentaccessible=yes

これは頻繁に必要となるものではありませんが、ウェブからのアクセスが必要な、まれなケースのために用意されています。Firefox はユーザーに拡張が contentaccessible フラグをこのような方法で用いることで潜在的セキュリティリスクになることを警告するかもしれないことに注意してください。

メモ: Firefox 2 では contentaccessible フラグが認識されない (フラグを含む行全体が無視されてしまう) ことから、アドオンを Firefox 2 と Firefox 3 の両方に対応させたい場合は、以下のように指定します。``` content mypackage location/ content mypackage location/ contentaccessible=yes


ファイルアップロードフィールド

Firefox のこれまでのバージョンでは、ユーザーがファイルをアップロードするために送信する際、そのファイルのフルパスがウェブアプリケーションに公開されてしまう場合がありました。このプライバシーの懸念は、Firefox 3 で、ファイル名のみをウェブアプリケーションに公開するよう仕様を変更することで解決されました。

フレーム内でのリモート JAR の使用

他のドメインから読み込んだ JAR ファイル内のコードの使用は、フレーム内では許可されなくなりました。これによって潜在的な攻撃ベクトルを軽減することができます。

file: URI の同一オリジンポリシーの変更

file: URI の同一オリジンポリシーが Firefox 3 で変更されました。これはコンテンツに影響する可能性があります。詳しくは file: URI の同一オリジンポリシーを参照してください。

JavaScript の変更

Firefox 3 は JavaScript 1.8 をサポートします。ウェブサイトやウェブアプリケーションの更新が必要となりうる重要な変更点としては、時代遅れであり非標準の Script オブジェクトがサポートされなくなることが挙げられます。これは <script> タグではなく、標準化されることのなかった JavaScript オブジェクトのことです。どちらにしても使用していた可能性は低いでしょうから、これが問題になることは恐らくないでしょう。

関連情報