Project Fugu "done" 專案

由於 Project Fugu 團隊的其中一個目標是讓開發人員能夠在網路上執行任何特定平台應用程式可執行的操作,因此團隊一直忙於為網頁開發人員新增缺少的功能,以彌補這項應用程式差距。如果您不相信,請查看 Fugu API 追蹤器的「Shipped」部分。以下是 55 個已發布的 API,依發布時間由舊到新排序:

API 名稱 出貨月份
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
Web Share TargetChrome 71
Web Share API 級別 2Chrome 75
非同步剪貼簿:讀取及寫入圖片Chrome 76
Web Share Target Level 2Chrome 76
輸入關鍵提示Chrome 77
擴大儲存空間配額Chrome 78
Get Installed Related Apps APIChrome 80
定期在背景同步處理Chrome 80
desktop-pwa:支援「minimal-ui」顯示模式Chrome 80
壓縮編解碼器Chrome 80
Contacts APIChrome 80
Badging APIChrome 81
允許透過推送功能,從 Service Worker 使用 Badging APIChrome 81
Barcode Detection APIChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API:可轉移的串流Chrome 85
應用程式捷徑Chrome 85
檔案系統存取權Chrome 86
支援非同步剪貼簿 API 的 text/htmlChrome 86
相機的平移/傾斜支援Chrome 87
FUGU 實作擷取系統和應用程式音訊輸出至耳機和喇叭的功能 Chrome 88
PointerLock unadjustedMovementChrome 88
建立類似 Android 相片挑選工具的相片/影片挑選器Chrome 88
Web Share (navigator.share) 與 Windows 10 的整合Chrome 88
Web NFCChrome 89
WebHID (人機介面裝置)Chrome 89
Web Serial APIChrome 89
電腦版網頁分享功能Chrome 89
手寫辨識 APIChrome 90
網頁應用程式的受管理設定Chrome 91
在 OS 登入時執行 PWAChrome 91
WebCodecsChrome 93
閒置偵測Chrome 94
EyeDropper APIChrome 95
macOS 和 Linux 上 PWA 的應用程式捷徑選單Chrome 96
PWA 的網址通訊協定處理常式註冊 Chrome 96
WebTransportChrome 97
剪貼簿:貼上 Retina 圖片會遺失 pHY 中繼資料。Chrome 98
PWA 應可透過與「實際應用程式」相同的方式解除安裝Chrome 99
Web NFC:NDEFReader makeReadOnly()Chrome 100
多螢幕 Window PlacementChrome 100
HIDDevice forget()Chrome 100
USBDevice forget()Chrome 101
Web USB sameObject 行為Chrome 101
已安裝的電腦版網頁應用程式可重疊顯示視窗控制項Chrome 102
檔案處理Chrome 102
chrome.management API 無法再與 PWA 應用程式互動Chrome 102
SerialPort forget()Chrome 103
本機字型存取權Chrome 103
Fugu 要求:動態應用程式捷徑 (捷徑 v2)Chrome 104
Async Clipboard API 的 Web 自訂格式Chrome 104
所有已發布的 Fugu API。

這份清單很長,而且我們還有更多工作要做。目前仍有幾個 API 和功能處於開發人員試用階段 (也就是已實作,但隱藏在功能旗標後方),有些則是我們已開始著手處理,還有許多功能仍在評估中。如您所見,現在還不是鬆懈下來,說「我們完成了」的時候。

來源私人檔案系統的同步檔案方法

相反地,我們並未宣告這項工作已完成,而是才剛起步。舉例來說,請參考下方圖表,該圖表顯示 navigator.storage.getDirectory() 方法的相對使用率激增,該方法用於原始私人檔案系統 (OPFS) 的進入點。例如,這個方法可用於滿足 Photoshop 的高效能儲存空間需求,而儲存空間社群自 Web SQL 開始淘汰以來,甚至在此之前,就非常有興趣採用這個方法。

這張圖表顯示 navigator.storage.getDirectory 方法的相對用量激增。

隨著越來越多人使用 OPFS,我們也新增了其他規定。舉例來說,在 worker 情境中需要一組完全同步的檔案方法 (請參閱 whatwg/fs#7 瞭解背景資訊)。雖然新的網路 API 通常為非同步,但使用同步方法可在 Wasm 上下文中更輕鬆地使用 OPFS,而且由於這項作業是在 worker 中執行,因此主執行緒不會遭到封鎖。

硬體 API 的隱私權改善措施

另一個例子是硬體 API,可讓您連線至 HID序列USB藍牙NFC 裝置。雖然部分 API 已推出一段時間,但直到最近,您仍無法忘記先前連線的裝置。不過,現在我們已為部分 API 提供 forget() 方法。舉例來說,以下是如何清除先前連線的序列裝置,以提升 API 的隱私權。

// Request a serial port.
const port = await navigator.serial.requestPort();
// Then later revoke permission to the serial port.
await port.forget();

多螢幕 Window Placement API 的細節

最後一個範例是 Multi-Screen Window Placement API,根據開發人員的意見回饋,先前 "Internal Display 1" 等通用螢幕標籤已替換為 "Built-in Retina Display" 等更有意義的標籤,方便使用者將這些標籤與多螢幕設定的螢幕建立關聯。

結論

從這三個例子中,您可以瞭解 Project Fugu 仍有許多進展。繼續或開始使用我們的 API,並提供意見回饋。由於所有 Fugu 規格都是在 GitHub 上公開開發,因此您可以在對應的 GitHub 存放區中提出規格問題,或是在現有問題中加入您的想法。如果您發現 Chrome 實作項目有錯誤,或發現實作項目與規格不同,請前往 new.crbug.com 回報錯誤。請務必盡可能提供詳細資訊,並提供簡單的操作說明,以便重現問題。

如果您擔心瀏覽器支援問題,許多 Fugu API 都能提供優異的漸進式強化功能。請參閱我的文章「SVGcode:將點陣圖轉換為 SVG 向量圖形的 PWA」,尋找靈感。我們會持續推動這些 API 進一步標準化、測試及採用其他瀏覽器。