เตรียมส่วนขยายของคุณเมื่อเราเริ่มทดสอบเมนูส่วนขยายใหม่

เผยแพร่เมื่อวันที่ 19 พฤศจิกายน 2024

ในงาน Google I/O 2024 เราได้แชร์การออกแบบเบื้องต้นสำหรับการเปลี่ยนแปลงที่กําลังจะเกิดขึ้นกับเมนูส่วนขยาย ซึ่งจะช่วยให้ผู้ใช้ควบคุมเว็บไซต์ที่ส่วนขยายเข้าถึงได้มากขึ้น เราจะเริ่มทดสอบการเปลี่ยนแปลงเหล่านี้เร็วๆ นี้ โดยเริ่มจากผู้ใช้กลุ่มเล็กๆ ใน Canary และหวังว่าจะได้เปิดตัวการเปลี่ยนแปลงเหล่านี้ในวงกว้างยิ่งขึ้นในอนาคต

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

โพสต์นี้จะกล่าวถึงภาพรวมของสิ่งที่จะเกิดขึ้นและวิธีเตรียมส่วนขยายด้วย API ใหม่เพื่อจัดการกรณีที่ผู้ใช้ระงับการเข้าถึงหน้าเว็บ

สิ่งที่เปลี่ยนแปลงไป

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

การออกแบบที่อยู่ระหว่างดำเนินการสำหรับเมนูส่วนขยายใหม่
การออกแบบที่อยู่ระหว่างดำเนินการสำหรับเมนูชิ้นงานใหม่

เมนูใหม่ (แสดงด้วยการออกแบบปัจจุบันซึ่งอาจมีการเปลี่ยนแปลง) จะแสดงส่วนขยายที่ทำงานในหน้าเว็บได้อย่างชัดเจนยิ่งขึ้น และช่วยให้ผู้ใช้เปลี่ยนสิทธิ์เข้าถึงได้หากเลือก นอกจากนี้ ผู้ใช้ยังป้องกันไม่ให้ส่วนขยายทั้งหมดทำงานในเว็บไซต์ที่เฉพาะเจาะจงได้ด้วย ดังที่ได้กล่าวไว้ การตั้งค่าหรือค่าเริ่มต้นที่มีอยู่จะไม่มีการเปลี่ยนแปลง เรามุ่งเน้นที่จะช่วยให้ผู้ใช้ค้นพบสิ่งที่เรามีอยู่แล้วได้ง่ายขึ้น

เพิ่มคำขอเข้าถึงเว็บไซต์

เราได้ออกแบบ API ใหม่เพื่อเสริมการเปลี่ยนแปลงเหล่านี้ โดยได้รับข้อมูลจากเบราว์เซอร์และนักพัฒนาซอฟต์แวร์รายอื่นๆ ในกลุ่มชุมชน WebExtensions

หากผู้ใช้ระงับการเข้าถึงหน้าเว็บไว้ ตอนนี้ส่วนขยายจะขอสิทธิ์เข้าถึงได้โดยใช้ permissions.addSiteAccessRequest API ใหม่ เมื่อส่วนขยายดำเนินการดังกล่าว ผู้ใช้จะเห็นข้อความ "อนุญาต" ข้างชิ้นส่วนของส่วนขยายในแถบเครื่องมือ การออกแบบที่เรากำลังพิจารณามีดังนี้

คำขอเข้าถึงเว็บไซต์ใน example.com
คําขอเข้าถึงเว็บไซต์ใน example.com

เมื่อผู้ใช้คลิก "อนุญาต" ในเมนูส่วนขยาย ระบบจะให้สิทธิ์เข้าถึงแบบถาวรแก่ส่วนขยายในโฮสต์ ผู้ใช้สามารถระงับการอนุญาตอีกครั้งในอนาคตได้โดยไปที่เมนูส่วนขยายหรือหน้า 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 ซึ่งเราจะนำไปพิจารณาต่อไปขณะที่พัฒนาเมนูใหม่