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