สิทธิ์ "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"