Project Fugu "เสร็จสิ้น"หรือไม่

หนึ่งในวัตถุประสงค์ของทีม Project Fugu คือช่วยให้นักพัฒนาแอปทําสิ่งต่างๆ บนเว็บได้เช่นเดียวกับที่แอปเฉพาะแพลตฟอร์มทําได้ ทีมจึงกําลังยุ่งอยู่กับการเพิ่มฟีเจอร์ที่ขาดหายไปซึ่งนักพัฒนาเว็บจําเป็นต้องใช้เพื่อปิดช่องโหว่ของแอปนี้ หากไม่เชื่อ โปรดดูส่วน "จัดส่งแล้ว" ของเครื่องมือติดตาม Fugu API API 55 รายการที่จัดส่งแล้วมีดังนี้ โดยจัดเรียงจากน้อยไปมากตามวันที่จัดส่ง

ชื่อ API จัดส่งภายใน
Web Bluetooth APIChrome 56
WebUSB APIChrome 61
เป้าหมายการแชร์เว็บChrome 71
Web Share API ระดับ 2Chrome 75
คลิปบอร์ดแบบไม่พร้อมกัน: อ่านและเขียนรูปภาพChrome 76
เป้าหมายส่วนแบ่งการตลาดบนเว็บระดับ 2Chrome 76
ป้อนคำแนะนำเกี่ยวกับคีย์Chrome 77
ขยายโควต้าพื้นที่เก็บข้อมูลChrome 78
Get Installed Apps Related APIChrome 80
การซิงค์ในเบื้องหลังตามระยะเวลาChrome 80
desktop-pwas: รองรับโหมดการแสดงผล "minimal-ui"Chrome 80
ตัวแปลงสัญญาณการบีบอัดChrome 80
Contacts APIChrome 80
Badging APIChrome 81
อนุญาตให้ใช้ Badging API จาก Service Worker ผ่าน PushChrome 81
Barcode Detection APIChrome 83
Content Indexing APIChrome 84
WebOTPChrome 84
Screen Wake Lock APIChrome 84
Streams API: สตรีมที่โอนได้Chrome 85
ทางลัดของแอปChrome 85
การเข้าถึงระบบไฟล์Chrome 86
การรองรับ text/html สําหรับ Async Clipboard APIChrome 86
การรองรับการแพน/เอียงสำหรับกล้องChrome 87
FUGU ใช้การบันทึกเอาต์พุตเสียงของระบบและแอปพลิเคชันไปยังหูฟังและลำโพง Chrome 88
PointerLock unadjustedMovementChrome 88
สร้างเครื่องมือเลือกรูปภาพ/วิดีโอที่คล้ายกับเครื่องมือเลือกรูปภาพใน AndroidChrome 88
การผสานรวมการแชร์เว็บ (navigator.share) กับ Windows 10Chrome 88
Web NFCChrome 89
WebHID (อุปกรณ์อินเทอร์เฟซผู้ใช้)Chrome 89
Web Serial APIChrome 89
การแชร์เว็บบนเดสก์ท็อปChrome 89
Handwriting Recognition APIChrome 90
การกำหนดค่าที่มีการจัดการสำหรับเว็บแอปพลิเคชันChrome 91
เรียกใช้ PWA ในการเข้าสู่ระบบปฏิบัติการChrome 91
WebCodecsChrome 93
การตรวจจับไม่มีการใช้งานChrome 94
EyeDropper APIChrome 95
เมนูทางลัดของแอปสำหรับ PWA ใน macOS และ LinuxChrome 96
การลงทะเบียนตัวแฮนเดิลโปรโตคอลของ URL สําหรับ PWA Chrome 96
WebTransportChrome 97
คลิปบอร์ด: การวางรูปภาพ Retina จะสูญเสียข้อมูลเมตา pHYsChrome 98
ผู้ใช้ควรถอนการติดตั้ง PWA ได้เช่นเดียวกับ "แอปจริง"Chrome 99
NFC บนเว็บ: NDEFReader makeReadOnly()Chrome 100
ตําแหน่งหน้าต่างแบบหลายหน้าจอChrome 100
HIDDevice forget()Chrome 100
USBDevice forget()ข้อมูลเบื้องต้นเกี่ยวกับ Chrome
ลักษณะการทํางานของ sameObject ใน Web USBข้อมูลเบื้องต้นเกี่ยวกับ Chrome
การวางซ้อนการควบคุมหน้าต่างสำหรับเว็บแอปบนเดสก์ท็อปที่ติดตั้งไว้Chrome 102
การจัดการไฟล์Chrome 102
chrome.management API ไม่สามารถโต้ตอบกับแอป PWA ได้อีกต่อไปChrome 102
SerialPort forget()Chrome 103
การเข้าถึงแบบอักษรในเครื่องChrome 103
คำขอ Fugu: ทางลัดของแอปแบบไดนามิก (Shortcuts v2)Chrome 104
รูปแบบที่กำหนดเองของเว็บสำหรับ Async Clipboard APIChrome 104
Fugu API ที่จัดส่งทั้งหมดจนถึงตอนนี้

รายการนี้ยาวมากและยังมีอีกหลายรายการที่เราต้องทำ ปัจจุบันยังมี API และฟีเจอร์ 2-3 รายการที่อยู่ในช่วงทดลองใช้สำหรับนักพัฒนาแอป (นั่นคือมีการใช้งานอยู่ แต่อยู่หลัง Flag ฟีเจอร์) บางรายการที่เราเริ่มพัฒนา และอีกหลายรายการที่อยู่ระหว่างการพิจารณา ดังที่คุณเห็น เรายังไม่หยุดเพียงเท่านี้

วิธีการไฟล์แบบซิงค์สําหรับระบบไฟล์ส่วนตัวต้นทาง

ในทางตรงกันข้าม เราเพิ่งเริ่มต้นเท่านั้น ไม่ได้ประกาศว่างานเสร็จแล้ว ตัวอย่างเช่น พิจารณาแผนภูมิด้านล่างที่แสดงการใช้งานที่เพิ่มขึ้นอย่างรวดเร็วของวิธี navigator.storage.getDirectory() ซึ่งใช้เป็นจุดแรกเข้าไปยังระบบไฟล์ส่วนตัวของต้นทาง (OPFS) วิธีการนี้ใช้เพื่อตอบสนองความต้องการพื้นที่เก็บข้อมูลประสิทธิภาพสูงของ Photoshop และเป็นสิ่งที่ชุมชนพื้นที่เก็บข้อมูลให้ความสนใจเป็นอย่างมากนับตั้งแต่เริ่มเลิกใช้งาน Web SQL และก่อนหน้านั้น

แผนภูมิแสดงการใช้งานแบบสัมพัทธ์ที่เพิ่มขึ้นอย่างรวดเร็วของเมธอด navigator.storage.getDirectory

เมื่อมีผู้ใช้งาน OPFS มากขึ้น จึงมีข้อกำหนดเพิ่มเติม เช่น ความจำเป็นในการใช้ชุดเมธอดไฟล์แบบซิงค์ทั้งหมดในบริบทของเวิร์กเกอร์ (ดูข้อมูลเบื้องต้นที่ whatwg/fs#7) แม้ว่าโดยทั่วไปแล้ว Web API ใหม่จะเป็นแบบแอซิงโครนัส แต่การมีเมธอดแบบซิงโครนัสจะทำให้การทำงานกับ OPFS ในบริบท Wasm ง่ายขึ้นมาก และเนื่องจากการดำเนินการนี้เกิดขึ้นในเวิร์กเกอร์ เทรดหลักจึงจะไม่ถูกบล็อก

การปรับปรุงความเป็นส่วนตัวสําหรับฮาร์ดแวร์ API

อีกตัวอย่างหนึ่งคือ API ของฮาร์ดแวร์ที่ช่วยให้คุณเชื่อมต่อกับอุปกรณ์ HID, ซีเรียล, USB, บลูทูธ และ NFC ได้ แม้ว่า API บางรายการเหล่านี้จะมีมาระยะหนึ่งแล้ว แต่ก่อนหน้านี้คุณยังไม่มีวิธีเลิกจำอุปกรณ์ที่เคยเชื่อมต่อ ตอนนี้มีแล้วด้วยวิธีการ forget() สำหรับ API บางรายการ ตัวอย่างเช่น วิธีเลิกจำอุปกรณ์ซีเรียลที่เชื่อมต่อไว้ก่อนหน้านี้ ซึ่งจะช่วยปรับปรุงความเป็นส่วนตัวของ API

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

การปรับแต่ง Multi-Screen Window Placement API

ตัวอย่างสุดท้ายคือ Multi-Screen Window Placement API ซึ่งเราได้เปลี่ยนป้ายกำกับหน้าจอทั่วไปอย่าง "Internal Display 1" ให้เป็นป้ายกำกับที่มีความหมายมากขึ้นอย่าง "Built-in Retina Display" ตามความคิดเห็นของนักพัฒนาแอป เพื่อให้ผู้ใช้เชื่อมโยงป้ายกำกับเหล่านี้กับหน้าจอของการตั้งค่าหลายหน้าจอได้ง่ายขึ้น

สรุป

ดังที่คุณเห็นจากตัวอย่างเพียง 3 ตัวอย่างนี้ Project Fugu ยังไม่เสร็จสมบูรณ์ ใช้ API ของเราต่อไปหรือเริ่มใช้และส่งความคิดเห็น เนื่องจากข้อกำหนดทั้งหมดของ Fugu พัฒนาขึ้นแบบเปิดใน GitHub คุณจึงสามารถยื่นเรื่องปัญหาเกี่ยวกับข้อกำหนดในที่เก็บ GitHub ที่เกี่ยวข้องหรือแสดงความคิดเห็นในปัญหาที่มีอยู่ได้ หากพบข้อบกพร่องในการใช้งาน Chrome หรือพบว่าการใช้งานแตกต่างจากข้อกำหนด โปรดรายงานข้อบกพร่องที่ new.crbug.com อย่าลืมระบุรายละเอียดให้มากที่สุดและระบุวิธีการง่ายๆ ในการจำลองข้อบกพร่อง

และหากคุณกังวลเกี่ยวกับการรองรับเบราว์เซอร์ โปรดทราบว่า Fugu API จำนวนมากมีการปรับปรุงแบบเป็นขั้นเป็นตอนที่ดีเยี่ยม ดูบทความ SVGcode: PWA สำหรับแปลงรูปภาพแรสเตอร์เป็นกราฟิกเวกเตอร์ SVG เพื่อหาแรงบันดาลใจ นอกจากนี้ เราจะไม่ถือว่างานของเราเสร็จสิ้นจนกว่า API เหล่านี้จะทำงานร่วมกันได้ และเราจะยังคงผลักดันมาตรฐาน การทดสอบ และการนำไปใช้กับเบราว์เซอร์อื่นๆ ต่อไป