Quyền "activeTab" cho phép tiện ích có quyền truy cập tạm thời vào thẻ đang hoạt động khi người dùng gọi tiện ích – ví dụ: bằng cách nhấp vào hành động của tiện ích. Quyền truy cập vào thẻ sẽ duy trì trong khi người dùng ở trên trang đó và sẽ bị thu hồi khi người dùng di chuyển ra ngoài hoặc đóng thẻ.
Ví dụ: nếu người dùng gọi tiện ích trên https://example.com rồi chuyển đến https://example.com/foo, thì tiện ích sẽ tiếp tục có quyền truy cập vào trang. Nếu người dùng chuyển đến https://chromium.org, quyền truy cập sẽ bị thu hồi.
Đây là giải pháp thay thế cho nhiều trường hợp sử dụng "<all_urls>", nhưng không hiển thị thông báo cảnh báo trong quá trình cài đặt:
Không có "activeTab":

Với "activeTab":

Không được cấp quyền truy cập vào các trang bị hạn chế, chẳng hạn như trang chrome://.
Ví dụ
Xem tiện ích mẫu 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
});
}
});
Động lực
Hãy cân nhắc sử dụng một tiện ích cắt nội dung trên web có một thao tác và một mục trong trình đơn theo bối cảnh. Tiện ích này có thể chỉ thực sự cần truy cập vào các thẻ khi người dùng nhấp vào thao tác của tiện ích hoặc khi mục trong trình đơn theo bối cảnh của tiện ích được thực thi.
Nếu không có "activeTab", tiện ích này sẽ cần yêu cầu quyền truy cập đầy đủ và liên tục vào mọi trang web, chỉ để có thể hoạt động nếu người dùng gọi đến. Đây là một lượng điện năng lớn được giao phó cho một tiện ích đơn giản như vậy. Và nếu tiện ích này bị xâm phạm, kẻ tấn công sẽ có quyền truy cập vào mọi thứ mà tiện ích này có.
Ngược lại, tiện ích có quyền "activeTab" chỉ có quyền truy cập vào một thẻ để phản hồi một thao tác rõ ràng của người dùng. Nếu tiện ích bị xâm nhập, kẻ tấn công sẽ cần đợi người dùng gọi tiện ích trước khi có quyền truy cập. Quyền truy cập đó chỉ kéo dài cho đến khi thẻ được chuyển hướng hoặc đóng.
Những gì "activeTab" cho phép
Khi bạn bật quyền "activeTab" cho một thẻ, tiện ích có thể:
- Gọi
scripting.insertCSS()hoặcscripting.executeScript()trên thẻ đó nếu"scripting"permission cũng được khai báo (như trong ví dụ ở trên). - Lấy URL, tiêu đề và biểu tượng trang web cho thẻ đó thông qua một API trả về đối tượng
tabs.Tab(về cơ bản,"activeTab"tạm thời cấp quyền của máy chủ lưu trữ). - Chặn các yêu cầu mạng trong thẻ đối với nguồn gốc khung chính của thẻ bằng cách sử dụng API webRequest. Tiện ích tạm thời nhận được quyền truy cập vào máy chủ lưu trữ cho nguồn gốc khung chính của thẻ.
Gọi activeTab
Các cử chỉ sau đây của người dùng sẽ cho phép quyền "activeTab":
- Thực hiện một hành động
- Thực thi một mục trong trình đơn theo bối cảnh
- Thực thi một phím tắt từ API lệnh
- Chấp nhận một đề xuất từ omnibox API