Web 開發人員的變更
HTML
- 已新增
HTMLImageElementcrossOrigin屬性,並且已將crossorigin屬性新增到<img>元素中。(參見 Firefox 錯誤 664299) HTMLSelectElement.add()方法現在支援在新專案插入之前指定一個專案或專案的索引。以前它只支援指定一個專案。(參見 Firefox 錯誤 666200)HTMLIsIndexElement建構函式已被移除。自 Firefox 4 之前,沒有元素實現過此介面。- 現在支援 HTML5“上下文選單”功能(
contextmenu屬性),它允許你向原生上下文選單新增自定義元素特定專案(此實現仍處於實驗階段,等待規範更改;參見 Firefox 錯誤 617528)。 - 已為所有元素添加了對
HTMLElement.accessKeyLabel屬性的支援。 <input>和<textarea>元素現在支援selectionDirection屬性,並且它們的setSelectionRange()方法已更新,以支援可選地指定方向。- 如果大多數元素已透過使用
tabindex屬性變得可聚焦,並且使用者隨後聚焦了該元素,則會在其周圍繪製焦點環。 - 在一組巢狀的
<label>元素中,點選事件不再觸發多個
DOM
insertAdjacentHTML方法已實現。BlobBuilder現在有一個getFile()方法,該方法將 Blob 的內容作為檔案返回。FileReaderSync介面(FileAPI 的一部分)已實現。- 巢狀
<label>中的事件處理已修復。 - 你現在可以使用
window.postMessage()在視窗之間傳遞File和FileList物件。 - 在編輯
contenteditable區域時,透過按回車鍵退出標題,或透過按兩次回車鍵退出列表編輯模式,現在會返回到段落輸入模式(即<p>塊內的段落),而不是透過<br>元素分隔行。 - 修復了一個錯誤,該錯誤導致在應用於
contenteditable區域的第一行時,對齊無法正確生效。 - 修復了一個錯誤,該錯誤導致在
contenteditable區域開頭按下刪除或退格鍵時,如果存在上一個contenteditable塊,則會影響該塊。 Document.getSelection()現在返回與window.getSelection()相同的Selection物件,而不是將其字串化。- HTML5
selectionDirection屬性使得可以定義可編輯文字中選擇的方向。 HTMLMediaElement現在有一個seekable屬性,它返回一個TimeRanges物件。HTMLMediaElement.preload屬性現在正確地反映為列舉值。- 當使用無效值時,
crossOrigin屬性預設為“Anonymous”。 - 當預設 Cookie 設定按站點覆蓋時,
navigator.cookieEnabled現在返回正確的資訊。
JavaScript
- 不帶引數呼叫
RegExp.exec()和RegExp.test()現在會與字串“undefined”進行匹配。 - 不帶引數或帶
undefined引數呼叫String.search()和String.match()現在會與空字串進行匹配,從而匹配所有字串。 - 透過新的(非標準)
watch()和unwatch()方法實現了對監視列表的支援。
CSS
- 根據規範,
<resolution>現在接受<number>,而不僅僅是<integer>值。 - 在使用
hyphens時,已為許多新語言添加了連字元規則。 background-size的處理已修訂,以更接近規範。- 過去,怪異模式下
text-decoration的行厚度和位置會根據後代文字進行調整。現在,標準模式和怪異模式的渲染更加相似。 - 在許多情況下,元素的水平定位已更符合規範。此文件即將推出,但目前請參見 Firefox 錯誤 682780,評論 23 瞭解詳細資訊。
- 當用作背景影像時,SVG 影像現在可以正確縮放。
網路
WebSocket
WebSocket物件的send()方法不再錯誤地返回布林值。WebSocket物件的close()方法現在與標準的當前草案匹配,並且關閉事件現在正確使用CloseEvent介面。- 現在支援
WebSocket物件的extensions屬性。 - WebSocket 建構函式現在支援協議陣列以及單個協議字串。
- WebSocket 不允許混合內容;也就是說,你不能再從安全內容開啟與非安全 WebSocket 伺服器的連線。
- WebSocket 的連線錯誤現在會觸發
onerror處理程式。 - WebSocket API 已更新到規範的最新草案(參見 Firefox 錯誤 674890、Firefox 錯誤 674527 和 Firefox 錯誤 674716)。
- WebSocket 的 deflate-stream 擴充套件已被停用;它已被棄用,並且破壞了與某些站點的相容性。
WebGL
- 現在可以透過 CORS 批准允許跨域紋理。
- 使用 Direct2D/Direct3D 10 的跨程序渲染。
MathML
開發者工具
console物件有一個新的dir()方法,它顯示指定物件屬性的互動式列表。
Mozilla 和附加元件開發者的更改
有關您可能需要使附加元件與 Firefox 8 相容的更改指南,請參見更新 Firefox 8 的附加元件。
注意: Firefox 8 要求重新編譯二進位制元件,所有主要的 Firefox 版本都如此。
XPCOM
Components.utils-
已建立新的方法
Components.utils.createObjectIn()和Components.utils.makeObjectPropsNormal(),以便更容易在特定隔離區中建立物件。
其他 XPCOM 相關更改
- 你現在可以透過
new File從元件程式碼例項化 DOMFile物件,而無需直接例項化nsIDOMFile。 nsTPtrArray陣列型別已被移除。其功能現在都可在nsTArray上獲得,nsTArray在使用指標型別例項化時現在提供SafeElementAt()方法。
Worker
不再可能從 ChromeWorker 訪問 XPCOM 物件。自 Firefox 錯誤 649537 起,XPConnect 已在工作執行緒上下文中停用。
XUL
- 在對
contentDocument的值呼叫document.execCommand()時出現的錯誤已修復。自 Firefox 3 以來,這已導致錯誤而不是正常工作。 - 自舉附加元件現在可以使用
chrome.manifest檔案載入 chrome。 - 指定最大尺寸時,XUL 影像現在在兩個方向上以相同的比例縮小。
構建系統更改
-
以下構建配置選項已被移除
--enable-timeline--disable-storage--necko-disk-cache
-
將 IDL 檔案編譯為標頭檔案時,如果需要,會自動包含標頭檔案
jspubtd.h。在使用 jsval 或 [implicit_jscontext] 的 IDL 檔案中手動包含jspubtd.h和/或jsapi.h不再需要。
Chrome 註冊
platformversion標誌可在 chrome.manifest 中用於指定 Gecko 版本相容性。
介面更改
mozIJSSubScriptLoader.loadSubScript()方法現在儘可能從啟動快取載入指令碼。ownerWindow屬性已從nsIAccessNode介面中移除。nsIDOMStorageWindow介面已合併到nsIDOMWindow介面中。nsIDOMWindowInternal介面的所有成員都已移至nsIDOMWindow介面。該介面本身(不帶成員)仍可用於相容性,直到 Firefox 9。- 為了提高效能,Places 資料庫非同步更新的回撥處理已更改。參見新的
mozIVisitInfoCallback.handleResult()和mozIVisitInfoCallback.handleError()方法,它們取代了舊的用於錯誤和成功條件處理的單一方法。 nsIMemoryReporter的KIND_MAPPED屬性已被棄用,取而代之的是KIND_NONHEAP,添加了新的單位型別UNITS_COUNT_CUMULATIVE和UNITS_PERCENTAGE。nsIMemoryReporterManager介面有一個新的explicit屬性,它報告顯式記憶體分配的總大小。nsIMemoryReporterManager介面有一個新的resident屬性,它報告使用的物理記憶體量。nsINetworkLinkService介面有一個新的屬性linkType。此屬性提供正在使用的網路連線型別。所有作業系統目前都返回LINK_TYPE_UNKNOWN。Android 支援因 perceived 安全問題而被撤回。nsISelection2介面已合併到nsISelectionPrivate介面中。nsISelection3介面已合併到nsISelection介面中。- 由於效能原因,
nsISessionStartup屬性狀態現在是jsval而不是字串。 - 對於最小化視窗,
nsIDocShell屬性isActive現在為false。 nsIDownloadHistory.addDownload()方法現在儲存下載在本地檔案系統中的目標。
已移除的介面
以下介面是不再需要的實現細節
nsITimelineServicensIDOMHTMLIsIndexElement
nsIWorkerFactory 介面也已被移除。仍然可以使用 Worker 和 ChromeWorker 建構函式建立 Worker。
其他更改
- 當視窗最小化、取消最小化或在全屏和視窗模式之間切換時,它會收到一個
sizemodechange事件。 - 您現在可以使用
extensions.autoDisableScopes首選項來停用來自特定附加元件安裝位置的附加元件的自動安裝。 Document物件上的新mozSyntheticDocument屬性可讓您確定文件是否是合成的(即,像獨立的影像、影片或音訊檔案一樣),而不是完整、標準的 DOM 文件。這可能很有用,例如,如果您想在這種情況下呈現不同的使用者介面(例如,根據這種情況以不同的方式新增上下文專案)。- 您現在可以在開啟
about:config時指定過濾器;例如,about:config?filter=sessionstore將僅顯示與會話儲存相關的首選項。