เผยแพร่เมื่อวันที่ 19 พฤศจิกายน 2024
ในงาน Google I/O 2024 เราได้แชร์การออกแบบเบื้องต้นสำหรับการเปลี่ยนแปลงที่กําลังจะเกิดขึ้นกับเมนูส่วนขยาย ซึ่งจะช่วยให้ผู้ใช้ควบคุมเว็บไซต์ที่ส่วนขยายเข้าถึงได้มากขึ้น เราจะเริ่มทดสอบการเปลี่ยนแปลงเหล่านี้เร็วๆ นี้ โดยเริ่มจากผู้ใช้กลุ่มเล็กๆ ใน Canary และหวังว่าจะได้เปิดตัวการเปลี่ยนแปลงเหล่านี้ในวงกว้างยิ่งขึ้นในอนาคต
เมื่อพูดคุยกับนักพัฒนาแอปเกี่ยวกับการเปลี่ยนแปลงนี้ในอดีต เรามักจะได้ยินข้อกังวลเกี่ยวกับผลกระทบของการเปลี่ยนแปลงวิธีให้ส่วนขยายขอสิทธิ์เข้าถึงโฮสต์ได้ ณ เวลาติดตั้ง เมนูใหม่จะไม่ส่งผลต่อลักษณะการทำงานเริ่มต้น ส่วนขยายจะยังคงได้รับสิทธิ์เข้าถึงโฮสต์ทั้งหมดที่ขอ ณ เวลาติดตั้ง เป้าหมายของการเปลี่ยนแปลงเหล่านี้คือช่วยให้ผู้ใช้ค้นพบการควบคุมที่มีอยู่แล้วได้ง่ายขึ้น
โพสต์นี้จะกล่าวถึงภาพรวมของสิ่งที่จะเกิดขึ้นและวิธีเตรียมส่วนขยายด้วย API ใหม่เพื่อจัดการกรณีที่ผู้ใช้ระงับการเข้าถึงหน้าเว็บ
สิ่งที่เปลี่ยนแปลงไป
เราจะเปิดตัวเมนูส่วนขยายใหม่เพื่อให้ผู้ใช้ควบคุมได้มากขึ้น ส่วนขยายจะยังคงได้รับสิทธิ์เข้าถึงโฮสต์ทั้งหมดที่ขอไว้ ณ เวลาติดตั้ง แต่ตอนนี้ผู้ใช้จะควบคุมการเข้าถึงต่อส่วนขยายได้ง่ายขึ้น
เมนูใหม่ (แสดงด้วยการออกแบบปัจจุบันซึ่งอาจมีการเปลี่ยนแปลง) จะแสดงส่วนขยายที่ทำงานในหน้าเว็บได้อย่างชัดเจนยิ่งขึ้น และช่วยให้ผู้ใช้เปลี่ยนสิทธิ์เข้าถึงได้หากเลือก นอกจากนี้ ผู้ใช้ยังป้องกันไม่ให้ส่วนขยายทั้งหมดทำงานในเว็บไซต์ที่เฉพาะเจาะจงได้ด้วย ดังที่ได้กล่าวไว้ การตั้งค่าหรือค่าเริ่มต้นที่มีอยู่จะไม่มีการเปลี่ยนแปลง เรามุ่งเน้นที่จะช่วยให้ผู้ใช้ค้นพบสิ่งที่เรามีอยู่แล้วได้ง่ายขึ้น
เพิ่มคำขอเข้าถึงเว็บไซต์
เราได้ออกแบบ API ใหม่เพื่อเสริมการเปลี่ยนแปลงเหล่านี้ โดยได้รับข้อมูลจากเบราว์เซอร์และนักพัฒนาซอฟต์แวร์รายอื่นๆ ในกลุ่มชุมชน WebExtensions
หากผู้ใช้ระงับการเข้าถึงหน้าเว็บไว้ ตอนนี้ส่วนขยายจะขอสิทธิ์เข้าถึงได้โดยใช้ permissions.addSiteAccessRequest
API ใหม่ เมื่อส่วนขยายดำเนินการดังกล่าว ผู้ใช้จะเห็นข้อความ "อนุญาต" ข้างชิ้นส่วนของส่วนขยายในแถบเครื่องมือ การออกแบบที่เรากำลังพิจารณามีดังนี้
เมื่อผู้ใช้คลิก "อนุญาต" ในเมนูส่วนขยาย ระบบจะให้สิทธิ์เข้าถึงแบบถาวรแก่ส่วนขยายในโฮสต์ ผู้ใช้สามารถระงับการอนุญาตอีกครั้งในอนาคตได้โดยไปที่เมนูส่วนขยายหรือหน้า chrome://extensions การคลิก "อนุญาต 1 รายการไหม" ในแถบเครื่องมือเป็นวิธีที่รวดเร็วในการให้สิทธิ์เข้าถึงทันที
ส่วนขยายสามารถเรียก permissions.addSiteAccessRequest
ด้วย tabId
เพื่อแสดงคําขอสิทธิ์สําหรับแท็บนั้น คุณสามารถใช้การตรวจหาฟีเจอร์เพื่อเริ่มใช้งานฟีเจอร์ดังกล่าวในชิ้นงานได้อย่างปลอดภัยตั้งแต่วันนี้ API จะไม่ทํางานใดๆ สําหรับผู้ใช้ที่ไม่มีเมนูใหม่ แต่การใช้ API นี้จะเป็นประโยชน์สําหรับผู้ใช้ที่มีเมนูใหม่เมื่อมีการเปิดตัวเมนูดังกล่าวทีละน้อย
chrome.tabs.onUpdated.addListener(async (tabId, changes) => {
if (typeof changes.url !== 'string') return;
const url = new URL(changes.url);
// If we are on the /checkout page of example.com.
if (url.origin === 'https://example.com' && url.pathname === '/checkout') {
const hasPermission = await chrome.permissions.contains({
origins: ['https://example.com/*']
});
// We already have host permissions.
if (hasPermission) {
return;
}
// Add a site access request if the API is available.
if (chrome.permissions.addSiteAccessRequest) {
chrome.permissions.addSiteAccessRequest({ tabId });
}
}
});
ในตัวอย่างนี้ เราจะเพิ่มคําขอเฉพาะในกรณีที่ผู้ใช้อยู่ในหน้า /checkout
คุณดูโค้ดแบบเต็มได้ที่ที่เก็บ chrome-extensions-samples
ส่วนขยายควรคำนึงถึงเวลาที่เหมาะสมในการขอสิทธิ์เข้าถึงจากผู้ใช้ ผู้ใช้มีแนวโน้มที่จะไม่สนใจคำขอที่รบกวน และ Chrome อาจจำกัดคำขอที่มากเกินไป นอกจากนี้ ผู้ใช้ยังเลือกปิดความสามารถของส่วนขยายในการแสดงคําขอได้ด้วย คุณจึงควรขอสิทธิ์เข้าถึงเฉพาะในบางสถานการณ์เท่านั้น เมื่อคุณมั่นใจว่าผู้ใช้ต้องการมีส่วนร่วมกับส่วนขยายของคุณ
คำขอจะเชื่อมโยงกับแท็บที่เฉพาะเจาะจงและระบบจะล้างคำขอโดยอัตโนมัติเมื่อผู้ใช้ไปยังต้นทางอื่น มีเมธอด removeSiteAccessRequest
ที่เกี่ยวข้องสําหรับล้างคําขออย่างชัดเจน (เช่น หากคําขอเชื่อมโยงกับเส้นทางหนึ่งๆ)
เนื่องจาก API นี้ลิงก์กับเมนูส่วนขยายใหม่ ระบบจะไม่สนใจการเรียกหากไม่ได้เปิดใช้เมนูใหม่ อย่างไรก็ตาม เราขอแนะนำให้คุณลองใช้ API นี้เลยและพิจารณานำไปใช้ในส่วนขยาย คุณจะมอบประสบการณ์การใช้งานที่ยอดเยี่ยมให้แก่ผู้ใช้ เนื่องจากการเปลี่ยนแปลงเมนูใหม่จะค่อยๆ แสดงต่อผู้ใช้จํานวนมากขึ้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้สิทธิ์ที่ไม่บังคับได้ในเอกสารประกอบเกี่ยวกับสิทธิ์
ลองเลย
API จะเปิดใช้งานโดยค่าเริ่มต้นใน Chrome 133.0.6838.0 ขึ้นไป (ปัจจุบันอยู่ใน Chrome Canary) หากต้องการเปิดใช้เมนูใหม่ ให้เปิดใช้ Flag "การควบคุมการเข้าถึงเมนูส่วนขยาย" ที่ chrome://flags
โปรดทราบว่าฟีเจอร์นี้ยังอยู่ระหว่างการพัฒนาและอาจเปลี่ยนแปลงได้ เราขอแนะนำให้ทดสอบใน Chrome Canary เพื่อดูประสบการณ์การใช้งานล่าสุด
คุณสามารถแสดงความคิดเห็นเกี่ยวกับการออกแบบใหม่ในรายชื่ออีเมล chromium-extensions ซึ่งเราจะนำไปพิจารณาต่อไปขณะที่พัฒนาเมนูใหม่