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

ด้วย "activeTab"

ระบบจะไม่ให้สิทธิ์เข้าถึงหน้าเว็บที่ถูกจำกัด เช่น หน้าเว็บ chrome://
ตัวอย่าง
ดูส่วนขยายตัวอย่าง 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
}
service-worker:
function reddenPage() {
document.body.style.backgroundColor = 'red';
}
chrome.action.onClicked.addListener((tab) => {
// If the tab URL is not set, it is a restricted page.
if (tab.url) {
chrome.scripting.executeScript({
target: { tabId: tab.id },
func: reddenPage
});
}
});
แรงจูงใจ
ลองใช้ส่วนขยายการตัดเว็บที่มีการดำเนินการและรายการเมนูตามบริบท ส่วนขยายนี้อาจต้องเข้าถึงแท็บเมื่อมีการคลิกการดำเนินการของส่วนขยาย หรือเมื่อมีการเรียกใช้รายการในเมนูบริบทของส่วนขยายเท่านั้น
หากไม่มี "activeTab" ส่วนขยายนี้จะต้องขอสิทธิ์เข้าถึงแบบเต็มและแบบถาวรในทุกเว็บไซต์
เพียงเพื่อให้ทำงานได้หากผู้ใช้เรียกใช้ การมอบสิทธิ์มากมายเช่นนี้ให้กับส่วนขยายที่เรียบง่ายเช่นนี้ และหากส่วนขยายถูกบุกรุก ผู้โจมตีจะ
เข้าถึงทุกอย่างที่ส่วนขยายมี
ในทางตรงกันข้าม ส่วนขยายที่มี"activeTab"สิทธิ์จะได้รับสิทธิ์เข้าถึงแท็บก็ต่อเมื่อผู้ใช้แสดงท่าทางผู้ใช้ที่ชัดเจนเท่านั้น หากส่วนขยายถูกบุกรุก ผู้โจมตีจะต้องรอให้ผู้ใช้เรียกใช้ส่วนขยายก่อนจึงจะได้รับสิทธิ์เข้าถึง และสิทธิ์เข้าถึงนั้นจะมีผลจนกว่าจะมีการไปยังแท็บอื่นหรือปิดแท็บ
สิ่งที่ "activeTab" ทำได้
ขณะที่เปิดใช้สิทธิ์ "activeTab" สำหรับแท็บ ส่วนขยายจะทำสิ่งต่อไปนี้ได้
- โทรหา
scripting.insertCSS()หรือscripting.executeScript()ในแท็บนั้นหากมีการประกาศ"scripting"สิทธิ์ด้วย (ดังตัวอย่างด้านบน) - รับ URL, ชื่อ และ favicon สำหรับแท็บนั้นผ่าน API ที่แสดงออบเจ็กต์
tabs.Tab(โดยพื้นฐานแล้ว"activeTab"จะให้สิทธิ์เข้าถึงโฮสต์ชั่วคราว) - สกัดกั้นคำขอเครือข่ายในแท็บไปยังต้นทางของเฟรมหลักของแท็บโดยใช้ webRequest API ส่วนขยายจะได้รับสิทธิ์ของโฮสต์สำหรับต้นทางของเฟรมหลักของแท็บชั่วคราว
การเรียกใช้ activeTab
ท่าทางสัมผัสของผู้ใช้ต่อไปนี้จะเปิดใช้สิทธิ์ "activeTab"
- การดำเนินการ
- การดำเนินการรายการในเมนูตามบริบท
- การเรียกใช้แป้นพิมพ์ลัดจาก Commands API
- การยอมรับคำแนะนำจาก Omnibox API