Mô tả
Sử dụng API chrome.declarativeContent
để thực hiện các hành động tuỳ thuộc vào nội dung của trang mà không cần quyền đọc nội dung của trang.
Quyền
declarativeContent
Khái niệm và cách sử dụng
API Nội dung khai báo cho phép bạn bật hành động của tiện ích tuỳ thuộc vào URL của trang web hoặc nếu bộ chọn CSS khớp với một phần tử trên trang mà không cần thêm quyền lưu trữ hoặc chèn tập lệnh nội dung.
Sử dụng quyền activeTab để tương tác với một trang sau khi người dùng nhấp vào thao tác của tiện ích.
Quy tắc
Quy tắc bao gồm các điều kiện và hành động. Nếu bất kỳ điều kiện nào được đáp ứng, tất cả hành động sẽ được thực thi. Các thao tác này là setIcon()
và showAction()
.
PageStateMatcher
khớp với các trang web nếu và chỉ khi đáp ứng tất cả tiêu chí được liệt kê. Giá trị này có thể khớp với url trang, bộ chọn hợp chất css hoặc trạng thái đánh dấu trang của một trang. Quy tắc sau đây cho phép hành động của tiện ích trên các trang của Google khi có trường mật khẩu:
let rule1 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Để cũng bật thao tác của tiện ích cho các trang web của Google có video, bạn có thể thêm một điều kiện thứ hai, vì mỗi điều kiện là đủ để kích hoạt tất cả thao tác đã chỉ định:
let rule2 = {
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: { hostSuffix: '.google.com', schemes: ['https'] },
css: ["input[type='password']"]
}),
new chrome.declarativeContent.PageStateMatcher({
css: ["video"]
})
],
actions: [ new chrome.declarativeContent.ShowAction() ]
};
Sự kiện onPageChanged
kiểm tra xem có quy tắc nào có ít nhất một điều kiện được thực hiện hay không và thực thi các hành động. Các quy tắc vẫn tồn tại trong các phiên duyệt web; do đó, trong thời gian cài đặt tiện ích, trước tiên, bạn nên sử dụng removeRules
để xoá các quy tắc đã cài đặt trước đó, sau đó sử dụng addRules
để đăng ký các quy tắc mới.
chrome.runtime.onInstalled.addListener(function(details) {
chrome.declarativeContent.onPageChanged.removeRules(undefined, function() {
chrome.declarativeContent.onPageChanged.addRules([rule2]);
});
});
Với quyền activeTab, tiện ích của bạn sẽ không hiển thị bất kỳ cảnh báo quyền nào và khi người dùng nhấp vào thao tác của tiện ích, thao tác đó sẽ chỉ chạy trên các trang có liên quan.
So khớp URL của trang
PageStateMatcher.pageurl
khớp khi đáp ứng các tiêu chí về URL. Các tiêu chí phổ biến nhất là chuỗi kết hợp của máy chủ lưu trữ, đường dẫn hoặc URL, theo sau là Có chứa, Bằng, Tiền tố hoặc Hậu tố. Bảng sau đây chứa một số ví dụ:
Tiêu chí | Liên kết |
---|---|
{ hostSuffix: 'google.com' } |
Tất cả URL của Google |
{ pathPrefix: '/docs/extensions' } |
URL của tài liệu về tiện ích |
{ urlContains: 'developer.chrome.com' } |
Tất cả URL tài liệu dành cho nhà phát triển Chrome |
Tất cả tiêu chí đều có phân biệt chữ hoa chữ thường. Để biết danh sách đầy đủ các tiêu chí, hãy xem UrlFilter.
So khớp CSS
Điều kiện PageStateMatcher.css
phải là bộ chọn phức hợp, nghĩa là bạn không thể đưa toán tử kết hợp như khoảng trắng hoặc ">
" vào bộ chọn. Điều này giúp Chrome so khớp bộ chọn hiệu quả hơn.
Bộ chọn phức hợp (OK) | Bộ chọn phức tạp (Không được) |
---|---|
a |
div p |
iframe.special[src^='http'] |
p>span.highlight |
ns|* |
p + ol |
#abcd:checked |
p::first-line |
Các điều kiện CSS chỉ khớp với các phần tử hiển thị: nếu một phần tử khớp với bộ chọn của bạn là display:none
hoặc một trong các phần tử mẹ của phần tử đó là display:none
, thì điều kiện này sẽ không khớp. Các phần tử được tạo kiểu bằng visibility:hidden
, được đặt ngoài màn hình hoặc bị các phần tử khác ẩn vẫn có thể giúp điều kiện của bạn khớp.
So khớp trạng thái đã đánh dấu
Điều kiện PageStateMatcher.isBookmarked
cho phép so khớp trạng thái đã đánh dấu của URL hiện tại trong hồ sơ của người dùng. Để sử dụng điều kiện này, bạn phải khai báo quyền "dấu trang" trong manifest của tiện ích.
Loại
ImageDataType
Xem https://developer.mozilla.org/en-US/docs/Web/API/ImageData.
Loại
ImageData
PageStateMatcher
So khớp trạng thái của một trang web dựa trên nhiều tiêu chí.
Thuộc tính
-
hàm khởi tạo
void
Hàm
constructor
có dạng như sau:(arg: PageStateMatcher) => {...}
-
arg
-
returns
-
-
css
string[] không bắt buộc
Khớp nếu tất cả bộ chọn CSS trong mảng khớp với các phần tử hiển thị trong một khung có cùng nguồn gốc với khung chính của trang. Tất cả bộ chọn trong mảng này phải là bộ chọn phức hợp để tăng tốc độ so khớp. Lưu ý: Việc liệt kê hàng trăm bộ chọn CSS hoặc liệt kê các bộ chọn CSS khớp hàng trăm lần trên mỗi trang có thể làm chậm trang web.
-
isBookmarked
boolean không bắt buộc
Chrome 45 trở lênSo khớp nếu trạng thái đánh dấu trang bằng với giá trị đã chỉ định. Yêu cầu quyền dấu trang.
-
pageUrl
UrlFilter không bắt buộc
Khớp nếu các điều kiện của
UrlFilter
được đáp ứng cho URL cấp cao nhất của trang.
RequestContentScript
Thao tác sự kiện khai báo chèn tập lệnh nội dung.
CẢNH BÁO: Thao tác này vẫn đang trong giai đoạn thử nghiệm và không được hỗ trợ trên các bản dựng Chrome ổn định.
Thuộc tính
-
hàm khởi tạo
void
Hàm
constructor
có dạng như sau:(arg: RequestContentScript) => {...}
-
returns
-
-
allFrames
boolean không bắt buộc
Liệu tập lệnh nội dung có chạy trong tất cả các khung của trang trùng khớp hay chỉ trong khung trên cùng. Giá trị mặc định là
false
. -
css
string[] không bắt buộc
Tên của các tệp CSS sẽ được chèn vào tập lệnh nội dung.
-
js
string[] không bắt buộc
Tên của các tệp JavaScript sẽ được chèn vào tập lệnh nội dung.
-
matchAboutBlank
boolean không bắt buộc
Liệu có chèn tập lệnh nội dung trên
about:blank
vàabout:srcdoc
hay không. Giá trị mặc định làfalse
.
SetIcon
Hành động sự kiện khai báo đặt biểu tượng hình vuông n-dip cho hành động trên trang hoặc hành động trong trình duyệt của tiện ích khi đáp ứng các điều kiện tương ứng. Bạn có thể sử dụng thao tác này mà không cần quyền của máy chủ lưu trữ, nhưng tiện ích phải có một thao tác trên trang hoặc trình duyệt.
Bạn phải chỉ định đúng một trong hai thuộc tính imageData
hoặc path
. Cả hai đều là từ điển ánh xạ một số pixel đến một bản trình bày hình ảnh. Biểu thị hình ảnh trong imageData
là một đối tượng ImageData; ví dụ: từ phần tử canvas
, trong khi biểu thị hình ảnh trong path
là đường dẫn đến tệp hình ảnh tương ứng với tệp kê khai của tiện ích. Nếu các pixel màn hình scale
vừa với một pixel không phụ thuộc vào thiết bị, thì biểu tượng scale * n
sẽ được sử dụng. Nếu không có tỷ lệ đó, một hình ảnh khác sẽ được đổi kích thước thành kích thước bắt buộc.
Thuộc tính
-
hàm khởi tạo
void
Hàm
constructor
có dạng như sau:(arg: SetIcon) => {...}
-
arg
-
returns
-
-
imageData
ImageData | đối tượng không bắt buộc
Một đối tượng
ImageData
hoặc một từ điển {size -> ImageData} đại diện cho một biểu tượng cần đặt. Nếu biểu tượng được chỉ định là từ điển, thì hình ảnh được sử dụng sẽ được chọn tuỳ thuộc vào mật độ pixel của màn hình. Nếu số pixel hình ảnh vừa với một đơn vị không gian màn hình bằngscale
, thì hình ảnh có kích thướcscale * n
sẽ được chọn, trong đó n là kích thước của biểu tượng trong giao diện người dùng. Bạn phải chỉ định ít nhất một hình ảnh. Lưu ý rằngdetails.imageData = foo
tương đương vớidetails.imageData = {'16': foo}
.
ShowAction
Một hành động sự kiện khai báo đặt hành động trên thanh công cụ của tiện ích thành trạng thái bật khi đáp ứng các điều kiện tương ứng. Bạn có thể sử dụng thao tác này mà không cần quyền của máy chủ. Nếu tiện ích có quyền activeTab, thì việc nhấp vào thao tác trên trang sẽ cấp quyền truy cập vào thẻ đang hoạt động.
Trên những trang không đáp ứng điều kiện, thao tác trên thanh công cụ của tiện ích sẽ có màu xám và khi nhấp vào thao tác đó, trình đơn theo bối cảnh sẽ mở ra thay vì kích hoạt thao tác.
Thuộc tính
-
hàm khởi tạo
void
Hàm
constructor
có dạng như sau:(arg: ShowAction) => {...}
-
arg
-
returns
-
ShowPageAction
Vui lòng sử dụng declarativeContent.ShowAction
.
Một thao tác sự kiện khai báo đặt thao tác trên trang của tiện ích thành trạng thái bật khi các điều kiện tương ứng được đáp ứng. Bạn có thể sử dụng hành động này mà không cần quyền của máy chủ lưu trữ, nhưng tiện ích phải có một hành động trên trang. Nếu tiện ích có quyền activeTab, thì việc nhấp vào thao tác trên trang sẽ cấp quyền truy cập vào thẻ đang hoạt động.
Trên những trang không đáp ứng điều kiện, thao tác trên thanh công cụ của tiện ích sẽ có màu xám và khi nhấp vào thao tác đó, trình đơn theo bối cảnh sẽ mở ra thay vì kích hoạt thao tác.
Thuộc tính
-
hàm khởi tạo
void
Hàm
constructor
có dạng như sau:(arg: ShowPageAction) => {...}
-
arg
-
returns
-
Sự kiện
onPageChanged
Cung cấp Declarative Event API (API sự kiện khai báo) bao gồm addRules
, removeRules
và getRules
.