สิทธิ์ "activeTab"

สิทธิ์ "activeTab" จะให้สิทธิ์ส่วนขยายเข้าถึงแท็บที่ใช้งานอยู่ในปัจจุบันได้ชั่วคราวเมื่อผู้ใช้เรียกใช้ส่วนขยาย เช่น ด้วยการคลิกการดำเนินการของส่วนขยาย สิทธิ์การเข้าถึงแท็บจะคงอยู่จนกว่าผู้ใช้จะอยู่ในหน้าดังกล่าว และจะถูกเพิกถอนเมื่อผู้ใช้ออกหรือปิดแท็บ ตัวอย่างเช่น หากผู้ใช้เรียกใช้ส่วนขยายใน https://example.com จากนั้นไปยัง https://example.com/foo ส่วนขยายจะยังคงเข้าถึงหน้าเว็บได้ หากผู้ใช้ไปที่ https://chromium.org การเข้าถึงจะถูกเพิกถอน

ส่วนนี้เป็นทางเลือกสําหรับการใช้งาน "<all_urls>" หลายๆ อย่าง แต่จะแสดงไม่มีข้อความเตือน ระหว่างการติดตั้ง

หากไม่มี "activeTab":

ไม่ใช้ ActiveTab

ด้วย "activeTab":

ด้วย ActiveTab

ตัวอย่าง

ดูส่วนขยายตัวอย่าง Page Redder

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

พนักงานบริการ:

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  if (!tab.url.includes('chrome://')) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

แรงจูงใจ

ลองใช้ส่วนขยายการตัดเว็บที่มีการดำเนินการและรายการเมนูตามบริบท ส่วนขยายนี้อาจต้องเข้าถึงแท็บจริงๆ ก็ต่อเมื่อมีการคลิกหรือเรียกใช้รายการในเมนูตามบริบทเท่านั้น

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

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

สิ่งที่ "activeTab" อนุญาต

เมื่อเปิดใช้สิทธิ์ "activeTab" ของแท็บ ส่วนขยายจะทำสิ่งต่อไปนี้ได้

  • เรียกใช้ scripting.insertCSS() หรือ scripting.executeScript() ในแท็บดังกล่าวหากมีการประกาศสิทธิ์ "scripting" ด้วย (ตามตัวอย่างข้างต้น)
  • รับ URL, ชื่อ และไอคอน Fav ของแท็บดังกล่าวผ่าน API ที่แสดงผลออบเจ็กต์ tabs.Tab ("activeTab" จะให้สิทธิ์โฮสต์ชั่วคราว)
  • สกัดกั้นคำขอของเครือข่ายในแท็บไปยังต้นทางเฟรมหลักของแท็บโดยใช้ webRequest API ส่วนขยายจะได้รับสิทธิ์ของโฮสต์ชั่วคราวสําหรับต้นทางเฟรมหลักของแท็บ

กำลังเรียกใช้ ActiveTab

ท่าทางสัมผัสของผู้ใช้ต่อไปนี้เปิดใช้สิทธิ์ "activeTab"