เกิดอะไรขึ้นในส่วนขยาย Chrome

ที่ผ่านมา 2023 เป็นปีที่เรายุ่งวุ่นวายในวงการส่วนขยาย Chrome ความคิดเห็นอันมีค่าที่ได้รับจากคุณจะช่วยให้เราปรับปรุงแพลตฟอร์มส่วนขยายและเอกสารประกอบได้ นอกจากนี้เรายังทำงานร่วมกับผู้ให้บริการเบราว์เซอร์รายอื่นๆ ในกลุ่มชุมชน Webชิ้นงาน เพื่อให้ API ของส่วนขยายทํางานได้สอดคล้องกันในเบราว์เซอร์ต่างๆ มากขึ้น

ในโพสต์นี้เราจะแชร์การเปลี่ยนแปลงบางอย่างซึ่งทีมส่วนขยาย Chrome ดำเนินการในช่วงครึ่งแรกของปีนี้ และฟีเจอร์ที่กำลังจะเปิดตัวในไตรมาสนี้ มาเริ่มกันเลย

API และฟีเจอร์ใหม่ๆ ของส่วนขยาย

ในส่วนนี้ เราอยากจะเน้นการเปิดตัว API ที่สำคัญๆ ตรวจสอบการปรับปรุง API อื่นๆ คร่าวๆ และแชร์ API รุ่นที่กำลังจะเปิดตัวเร็วๆ นี้

ไฮไลต์

เอกสารนอกหน้าจอ

Offscreen API เปิดตัวใน Chrome 109 ช่วยให้ส่วนขยาย Manifest V3 สามารถจัดการกรณีการใช้งานที่ต้องมีการโต้ตอบกับ DOM หรือหน้าต่าง ซึ่งดำเนินการไม่ได้ในโปรแกรมทำงานของบริการส่วนขยาย นอกจากนี้ Chrome 114 ยังได้นำเสนอเหตุผลเพิ่มเติมอีก 2 ประการเมื่ออยู่นอกหน้าจอ คือ 'WORKERS' สำหรับกรณีที่เอกสารของคุณต้องสร้างชื่อผู้ปฏิบัติงาน และ 'LOCAL_STORAGE' เพื่อช่วยย้ายข้อมูลจาก window.localStorage ไปยัง chrome.storage API

ตั้งแต่ Chrome 115 เป็นต้นไป คุณจะระบุเหตุผลได้หลายประการเมื่อสร้างเอกสารนอกหน้าจอ ซึ่งช่วยให้คุณทำงาน 2 อย่างที่เกี่ยวข้องในเอกสารเดียวกันได้

API แผงด้านข้างใหม่ 🎉

ก่อนหน้านี้ วิธีเดียวในการสร้างแถบด้านข้างในส่วนขยายคือการแทรกองค์ประกอบใหม่ด้วยสคริปต์เนื้อหาลงในทุกหน้า มีการเปิดตัว Side Panel API ใน Chrome 114 ขณะนี้คุณสามารถพัฒนาการใช้งานแถบด้านข้างที่แสดงร่วมกันสำหรับผู้ใช้ในลักษณะที่ตรงไปตรงมามากขึ้น อ่านเพิ่มเติมเกี่ยวกับวิธีที่ Side Panel API จะช่วยให้คุณออกแบบประสบการณ์ของผู้ใช้ที่ดียิ่งขึ้น

ส่วนขยายพจนานุกรมที่แสดงคำจำกัดความของคำที่เลือก
ส่วนขยายพจนานุกรมแผงด้านข้าง ดูโค้ดในที่เก็บ chrome-extensions-ตัวอย่าง

Service Worker ที่มีประสิทธิภาพมากขึ้น

ตอนนี้เหตุการณ์ของส่วนขยายทั้งหมดจะเริ่มต้นจับเวลาที่ไม่มีการใช้งานของโปรแกรมทำงานของส่วนขยายอีกครั้ง ใน Chrome 110 โปรแกรมทำงานของบริการส่วนขยายได้เลิกใช้อายุการใช้งานสูงสุด 5 นาทีสูงสุด นอกจากนี้ ข้อความที่ส่งถึงแอปพลิเคชันที่มาพร้อมเครื่องและข้อความภายในส่วนขยายจะรีสตาร์ทตัวจับเวลาเมื่อไม่มีการใช้งาน อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ในบทความวงจรชีวิตของโปรแกรมทำงานของบริการส่วนขยาย

เปิดตัว API เพิ่มเติม

  • Action API: ตั้งแต่ Chrome 110 เป็นต้นไป คุณจะปรับแต่งข้อความป้ายได้ด้วย setBadgeTextColor() และ getBadgeTextColor() นอกจากนี้ isEnabled() ยังช่วยให้คุณตรวจสอบว่ามีการเปิดใช้การดำเนินการในแท็บปัจจุบันหรือไม่
  • Commands API: ข้อบกพร่องที่ทางลัดของส่วนขยายที่ประกาศในไฟล์ Manifest ใน "commands._execute_action" หายไประหว่างการแปลงเป็น MV3 ได้รับการแก้ไขใน Chrome 111
  • Downloads API: UI การดาวน์โหลดเริ่มต้นใน Chrome ได้ย้ายจากชั้นวางที่ด้านล่างของด้านขวาของแถบอเนกประสงค์ หากต้องการปิดลักษณะการทำงานนี้ คุณสามารถใช้ downloads.setUiOptions() ซึ่งแทนที่ setShelfEnabled()
  • History API: chrome.history.getVisits() และ chrome.history.search() จะแสดงข้อมูลจากอุปกรณ์อื่นๆ ที่ซิงค์กับฐานข้อมูลประวัติในเครื่องด้วย ซึ่งอาจส่งผลให้มีรายการในประวัติมากขึ้นและมีการเข้าชมจํานวนมากขึ้น มีการเพิ่ม isLocal ไปยัง VisitItem ใน Chrome 115 (คาดว่าจะมีความเสถียรในช่วงปลายเดือนนี้) เพื่อกรองตามการเข้าชมในพื้นที่เท่านั้น
  • Identity API: ตอนนี้หน้าต่างการตรวจสอบสิทธิ์จะปรากฏเป็นป๊อปอัป แทนที่จะใช้หน้าต่างแอปพลิเคชันแบบเต็ม เราได้เพิ่มตัวเลือกใหม่ 2 รายการ ได้แก่ abortOnLoadForNonInteractive และ timeoutMsForNonInteractive เพื่อให้ควบคุมได้มากขึ้นในระหว่างกระบวนการเปลี่ยนเส้นทาง JavaScript
  • Storage API: ใน Chrome 112 ขนาดพื้นที่เก็บข้อมูล chrome.session เพิ่มขึ้นเป็น 10 MB จากนั้นขนาดพื้นที่เก็บข้อมูล chrome.local ก็มีการเปลี่ยนแปลงให้เหมือนกับใน Chrome 114

เร็วๆ นี้...

Chrome เวอร์ชันที่กำลังจะเปิดตัวนี้จะเปิดตัวฟีเจอร์ต่างๆ มากมายที่จะช่วยให้การย้ายส่วนขยายไปยังไฟล์ Manifest V3 ง่ายขึ้น ดูรายการการเปลี่ยนแปลงที่เกี่ยวข้องกับการย้ายข้อมูล MV3 ที่กำลังจะเกิดขึ้นได้ที่หน้าปัญหาที่ทราบ นอกจากนี้ เราวางแผนที่จะเพิ่มฟีเจอร์ต่อไปนี้

  • declarativeNetRequest API: ค่าเริ่มต้นสำหรับพร็อพเพอร์ตี้ isUrlFilterCaseSensitive จะเปลี่ยนเป็น false ดูชุดข้อความ WECG
  • File Handling API จะอนุญาตให้ส่วนขยายของ ChromeOS เปิดไฟล์ที่มีประเภท MIME และนามสกุลไฟล์ที่ระบุได้ ปัจจุบันฟีเจอร์นี้อยู่หลังธง
  • Runtime API: เรากำลังจะเปิดตัว runtime.getContexts() เพื่อแทนที่ extension.getViews() ซึ่งเลิกใช้งานแล้ว วิธีนี้จะช่วยให้ส่วนขยายระบุได้ว่าหน้าส่วนขยาย เช่น แผงด้านข้างหรือเอกสารนอกหน้าจอเปิดอยู่หรือไม่ ดูข้อเสนอ WECG
  • โปรแกรมทำงานของบริการ: เรากำลังเพิ่มการจัดการอย่างเข้มงวดใน Chrome API ที่แสดงข้อความแจ้งของผู้ใช้ดังนี้ permissions.request(), desktopCapture.chooseDesktopMedia(), identity.launchWebAuthFlow() และ management.uninstall()
  • API แผงด้านข้าง: เรากำลังเปิดตัว sidepanel.open() ซึ่งจะเปิดแผงด้านข้างของส่วนขยายแบบเป็นโปรแกรมตามท่าทางสัมผัสของผู้ใช้ เช่น การคลิกเมนูตามบริบท
  • TabCapture API: เรากำลังเพิ่มความสามารถในการเรียกใช้ getMediaStreamId() จาก Service Worker ของส่วนขยายและรับ MediaStream จากรหัสสตรีมในเอกสารนอกหน้าจอ โปรดดูการบันทึกเสียงและการจับภาพหน้าจอเพื่อดูตัวอย่าง

โปรดติดตามหน้ามีอะไรใหม่ในส่วนขยายสำหรับประกาศเหล่านี้ทันทีที่พร้อมให้ใช้งานใน Chrome เบต้า

การอัปเกรดเอกสารประกอบและคำแนะนำอื่นๆ เกี่ยวกับไฟล์ Manifest V3

นอกจากนี้เรายังพยายามอย่างเต็มที่เพื่อปรับปรุงประสบการณ์การเรียนรู้ของนักพัฒนาซอฟต์แวร์อีกด้วย ขอขอบคุณทุกคนที่สละเวลาถามคำถามใน chromium-group และรายงานปัญหาเกี่ยวกับเอกสารประกอบใน developer.chrome.com

ไฮไลต์

  • ส่วนการย้ายข้อมูล MV3 ใหม่จะระบุวิธีที่นำไปใช้ได้จริงในการแปลงส่วนขยายไฟล์ Manifest V2 เป็น Manifest V3
  • คู่มือโปรแกรมทำงานของบริการส่วนขยายจะให้ข้อมูลโดยละเอียดเกี่ยวกับหัวข้อของโปรแกรมทำงานของบริการส่วนขยาย ซึ่งรวมไปถึงวิธีการลงทะเบียนและอัปเดต ลักษณะของวงจร การนำเข้า และอื่นๆ
  • บทแนะนำจัดการเหตุการณ์กับโปรแกรมทำงานของบริการจะสอนพื้นฐานของโปรแกรมทำงานของบริการส่วนขยาย โดยจะสร้างส่วนขยายแถบอเนกประสงค์ที่ให้คุณเข้าถึงหน้าอ้างอิง API ของส่วนขยายได้อย่างรวดเร็ว

ข้อมูลอัปเดตเพิ่มเติม

เร็วๆ นี้...

  • วิธีย้ายข้อมูลโค้ดที่โฮสต์จากระยะไกลไปยังไฟล์ Manifest V3
  • วิธีเรียกใช้การทดสอบอัตโนมัติสำหรับส่วนขยาย Chrome
  • ปรับปรุงคำแนะนำเกี่ยวกับคำขอสุทธิเชิงประกาศ
  • การปรับปรุงคำอธิบายสคริปต์เนื้อหา

💡 รู้ไหม

ก่อนที่จะสรุป เราขอแชร์เครื่องมือและข้อมูลเชิงลึกที่มีประโยชน์ 2 รายการดังนี้

  • Chrome เริ่มรองรับการใช้งาน WebHID แล้ว โดยคุณสามารถลองใช้ API นี้ใน Chrome 115 ได้ (แต่โปรดทราบว่ายังอยู่ระหว่างการพัฒนา)
  • Puppeteer รองรับการทดสอบในโหมดไม่มีส่วนหัวโดยใช้ --headless=new แล้ว อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ในบล็อกโพสต์การอัปเกรดโหมดไม่มีส่วนหัวของ Chrome
  • คุณสามารถใช้เครื่องมือทดสอบการอัปเดตส่วนขยายเพื่อตรวจสอบว่ามีการเรียกคำเตือนใดเมื่อมีการเปลี่ยนแปลงสิทธิ์ในไฟล์ Manifest วิธีนี้ทำให้คุณสัมผัสกับกระบวนการอัปเดตได้เหมือนกับที่ผู้ใช้ได้รับ ซึ่งเป็นสิ่งสำคัญเนื่องจากสิทธิ์บางอย่างอาจปิดใช้ส่วนขยายจนกว่าผู้ใช้จะให้สิทธิ์เข้าถึงอีกครั้ง

มาเชื่อมต่อกันเลย 🙌

โดยในปีนี้ ทีมส่วนขยายยินดีที่จะได้พบปะกับนักพัฒนาส่วนขยายแบบเข้าร่วมด้วยตนเองที่งาน Google I/O Connect เรากำลังสร้างพื้นที่ทำงานใหม่เพื่อเชื่อมต่อกับคุณ เช่น การเปิดตัวการสนทนากลุ่มและกิจกรรมมีตติ้ง

ในระหว่างนี้ โปรดถามคำถามเกี่ยวกับ chromium-groups ต่อไป ลองพิจารณาเข้าร่วมใน WECG และรายงานปัญหาเกี่ยวกับเอกสารในที่เก็บ GitHub ของdeveloper.chrome.com

ขอขอบคุณอีกครั้งที่ร่วมเป็นส่วนหนึ่งของชุมชนนักพัฒนาซอฟต์แวร์ส่วนขยาย