更新 Firefox 3 的 Web 應用程式
即將釋出的 Firefox 3 中有許多可能影響您網站或 Web 應用程式的更改,以及一些您可能希望利用的新功能。本文將作為您更新內容以充分利用 Firefox 3 的起點。
DOM 更改
來自外部文件的節點在可以插入到當前文件之前,應該使用 document.importNode()(或使用 document.adoptNode() 進行採用)進行克隆。關於 Node.ownerDocument 問題的更多資訊,請參閱 W3C DOM FAQ。
Firefox 目前不強制執行此規則(在 Firefox 3 開發期間曾強制執行過一段時間,但強制執行此規則導致太多網站出錯)。我們鼓勵 Web 開發人員修復其程式碼以遵循此規則,以提高未來的相容性。
HTML 更改
字元集繼承更改
Firefox 3 修復了框架和 iframe 中允許它們繼承父級字元集的安全漏洞。這在某些情況下可能會導致問題。現在,只有當框架和父級都從同一伺服器載入時,才允許框架繼承父級的字元集。如果您有假定來自其他伺服器的框架將繼承相同字元集的頁面,則應更新框架的 HTML 以明確指示其字元集。
SCRIPT 元素更改
在 text/html 文件中,<script> 元素現在需要一個閉合的 </script>(在 HTML 4 文件中),即使您不包含任何內容。在以前版本的 Firefox 中,您可以這樣做:
<script … />
現在,標記必須符合 HTML 規範(如果它實際上是 HTML),因此您必須實際關閉它,如下所示:
<script …></script>
這提高了相容性和安全性。
CSS 更改
基於 em、ex 單位的字號更改
之前,em 和 ex 單位的字號值會受到使用者最小字號設定的影響:如果一個字號由於最小字號而顯示得更大,那麼基於此字號的字號設定的 em 和 ex 單位也會相應地擴大。這與基於百分比的字號表現方式不一致。
現在,em 和 ex 單位的字號值基於一個“預期字號”,該字號不受使用者最小字號設定的影響。換句話說,字號始終根據設計者的意圖計算,然後根據最小字號進行調整。
請參閱 Firefox bug 434718,特別是其 NOT A CASE FOR THE BUG TEMPLATE - The following link points to a Bugzilla attachment, not a Bugzilla bug; if you use the attachment number as a bug number, it becomes nonsense attachment 322943 NOT A CASE FOR THE BUG TEMPLATE 以獲取演示(必須以最小字號 >= 6 進行檢視才能看到差異:在 Firefox 2 中,兩個框的級聯表現不同,因為基於 em 的字號會“反彈”最小字號)。
安全更改
Chrome 訪問
在以前版本的 Firefox 中,任何網頁都可以使用 chrome:// 協議從 chrome 載入指令碼或圖片。這使得網站能夠檢測到外掛的存在——這可能被用來繞過新增安全功能的外掛,從而損害使用者的安全。
Firefox 3 僅允許 Web 內容訪問 chrome://browser/ 和 chrome://toolkit/ 空間中的項。這些檔案旨在供 Web 內容訪問。所有其他 chrome 內容現在都無法被 Web 訪問。
但是,擴充套件程式可以透過在 chrome.manifest 檔案中指定一個特殊標誌來使其內容可供 Web 訪問,如下所示:
content my-package location/ contentaccessible=yes
這通常不需要您進行操作,但對於那些少數需要它的情況,它仍然可用。請注意,Firefox 可能會提醒使用者您的擴充套件程式以這種方式使用了 contentaccessible 標誌,因為它確實構成了潛在的安全風險。
注意:由於 Firefox 2 不理解 contentaccessible 標誌(它會忽略包含該標誌的整行),如果您希望您的附加元件與 Firefox 2 和 Firefox 3 都相容,您應該這樣做:
content my-package location/
content my-package location/ contentaccessible=yes
檔案上傳欄位
在以前版本的 Firefox 中,有時使用者在提交檔案進行上傳時,檔案的完整路徑會提供給 Web 應用程式。Firefox 3 解決了這個隱私問題;現在只有檔名本身可供 Web 應用程式訪問。
在框架中使用遠端 JAR
現在不允許在框架中使用從其他域載入的 JAR 檔案中的程式碼;這可以緩解一個潛在的攻擊向量。
file: URI 的同源策略更改
Firefox 3 中 file: URI 的同源策略已更改。這可能會影響您的內容;請參閱 file: URI 的同源策略 以獲取詳細資訊。
JavaScript 更改
Firefox 3 支援 JavaScript 1.8。一個可能需要更新您的網站或應用程式的重要更改是,已廢棄且非標準的 Script 物件不再受支援。這不是 <script> 標籤,而是一個從未標準化的 JavaScript 物件。您可能從未實際使用過它,所以您可能沒事。