Quyền activeTab
cấp cho tiện ích quyền truy cập tạm thời vào thẻ hiện đang hoạt động khi
người dùng gọi tiện ích (ví dụ: bằng cách nhấp vào thao tác trên trình duyệt). Quyền truy cập vào thẻ
kéo dài khi người dùng đang ở trên trang đó, và được thu hồi khi người dùng rời khỏi hoặc đóng thẻ.
Mã này đóng vai trò thay thế cho nhiều trường hợp sử dụng <all_urls>
, nhưng hiển thị không có thông báo cảnh báo
trong khi cài đặt:
Lưu ý: Từ M72 trở đi, quyền activeTab
sẽ được cấp cho đến khi người dùng chuyển đến một
nguồn gốc khác. Tức là nếu người dùng gọi tiện ích trên https://example.com, sau đó
chuyển đến https://example.com/foo, thì tiện ích này sẽ tiếp tục có quyền truy cập vào trang này. Nếu
người dùng chuyển đến https://chromium.org, thì quyền truy cập sẽ bị thu hồi.
Nếu không có activeTab
:
Với activeTab
:
Ví dụ:
Xem phần mở rộng mẫu Trình rút gọn trang:
{
"name": "Page Redder",
"version": "2.0",
"permissions": [
"activeTab"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Make this page red"
},
"manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
// No tabs or host permissions needed!
console.log('Turning ' + tab.url + ' red!');
chrome.tabs.executeScript({
code: 'document.body.style.backgroundColor="red"'
});
});
Động lực
Hãy xem xét một tiện ích trích đoạn nội dung trên web có một thao tác trên trình duyệt và mục trong trình đơn theo bối cảnh. Chiến dịch này tiện ích mở rộng có thể chỉ thực sự cần truy cập các tab khi hành động của trình duyệt được nhấp vào hoặc khi đã thực thi mục trình đơn theo bối cảnh.
Nếu không có activeTab
, tiện ích này sẽ cần yêu cầu quyền truy cập đầy đủ, liên tục vào mọi trang web,
để ứng dụng có thể thực hiện công việc
nếu người dùng yêu cầu. Đây là rất nhiều
sức mạnh để giao phó cho một tiện ích đơn giản như vậy. Nếu tiện ích đã từng bị xâm phạm, kẻ tấn công
có quyền truy cập vào mọi thứ mà tiện ích 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 cử chỉ rõ ràng của người dùng. Nếu tiện ích bị xâm phạm, kẻ tấn công sẽ phải đợi
người dùng gọi tiện ích trước khi có được quyền truy cập. Và quyền truy cập đó chỉ kéo dài cho đến khi thẻ
đã được điều hướng hoặc bị đóng.
Những lợi ích mà ActiveTab cho phép
Khi bật quyền activeTab
cho một thẻ, tiện ích có thể:
- Gọi
tabs.executeScript
hoặctabs.insertCSS
trên thẻ đó. - Lấy URL, tiêu đề và biểu tượng trang web cho thẻ đó thông qua API trả về đối tượng
tabs.Tab
(về cơ bản,activeTab
tạm thời cấp quyềntabs
). - Chặn các yêu cầu mạng trong thẻ đến nguồn gốc khung chính của thẻ bằng cách sử dụng webRequest API. Tiện ích này tạm thời nhận được quyền của máy chủ lưu trữ đối với nguồn gốc khung chính của thẻ.
Đang gọi thẻ đang hoạt động
Các cử chỉ sau đây của người dùng sẽ bật activeTab
:
- Thực hiện thao tác trên trình duyệt
- Thực hiện hành động trên trang
- Thực thi mục trong trình đơn theo bối cảnh
- Thực thi phím tắt qua lệnh API
- Chấp nhận đề xuất từ API thanh địa chỉ