chrome.declarativeContent

refresh date: 2026-09-25 robots: noindex

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 một trang mà không cần có quyền đọc nội dung của trang đó.

Quyền

declarativeContent

Cách sử dụng

Declarative Content API cho phép bạn bật hành động của tiện ích tuỳ thuộc vào URL của một 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 truy cập vào máy chủ 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ả các hành động sẽ được thực thi. Các thao tác là setIcon và showAction.

PageStateMatcher sẽ so khớp các trang web nếu và chỉ khi đáp ứng tất cả tiêu chí được liệt kê. Bạn có thể so khớp url trang, bộ chọn CSS kết hợp hoặc trạng thái đánh dấu trang của một trang. Quy tắc sau đây cho phép tiện ích thực hiện hành động 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 cho phép thao tác của tiện ích cho các trang trên Google Sites có video, bạn có thể thêm điều kiện thứ hai, vì mỗi điều kiện đều đủ để kích hoạt tất cả cá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 đáp ứng 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 dùng removeRules để xoá các quy tắc đã cài đặt trước đó, rồi 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 nào về quyền và khi người dùng nhấp vào thao tác của tiện ích, tiện ích sẽ chỉ chạy trên các trang có liên quan.

So khớp URL trang

PageStateMatcher.pageurl sẽ khớp khi tiêu chí về URL được đáp ứng. Các tiêu chí phổ biến nhất là phép nối của máy chủ lưu trữ, đường dẫn hoặc URL, theo sau là Chứa, Bằng, Tiền tố hoặc Hậu tố. Bảng sau đây chứa một vài 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ả cá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. Để xem 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 kết hợp, nghĩa là bạn không thể thêm 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 các 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 ổn)
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 những phần tử được 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 này không khiến điều kiện khớp. Các phần tử được tạo kiểu bằng visibility:hidden, nằm ngoài màn hình hoặc bị các phần tử khác che khuất vẫn có thể khiến điều kiện của bạn trùng khớp.

So khớp trạng thái đã đánh dấu trang

Điều kiện PageStateMatcher.isBookmarked cho phép so khớp trạng thái được đánh dấu trang của URL hiện tại trong hồ sơ 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 tệp kê khai của tiện ích.

Loại

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) => {...}

  • 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 kết 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ê bộ chọn CSS khớp hàng trăm lần trên mỗi trang có thể làm chậm các trang web.

  • isBookmarked

    boolean không bắt buộc

    Chrome 45 trở lên

    Khớp nếu trạng thái đánh dấu trang của trang bằng với giá trị đã chỉ định. Yêu cầu quyền đối với 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

Hành động sự kiện khai báo sẽ chèn một 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 ổn định của Chrome.

Thuộc tính

  • hàm khởi tạo

    void

    Hàm constructor có dạng như sau:

    (arg: RequestContentScript) => {...}

  • allFrames

    boolean không bắt buộc

    Cho dù tập lệnh nội dung 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 dưới dạng một phần của 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 dưới dạng một phần của tập lệnh nội dung.

  • matchAboutBlank

    boolean không bắt buộc

    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

Thao tác sự kiện khai báo đặt biểu tượng hình vuông n-dip cho thao tác trên trang hoặc thao tác trên trình duyệt của tiện ích khi các điều kiện tương ứng được đáp ứ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 trang hoặc thao tác trên trình duyệt.

Bạn phải chỉ định chính xác 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 biểu diễn hình ảnh. Hình ảnh trong imageData là một đối tượng ImageData; ví dụ: từ một phần tử canvas, trong khi hình ảnh trong path là đường dẫn đến một tệp hình ảnh so với tệp kê khai của tiện ích. Nếu các pixel trên màn hình scale phù hợp với một pixel không phụ thuộc vào thiết bị, thì biểu tượng scale * n sẽ được dùng. Nếu thiếu 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) => {...}

  • imageData

    ImageData | object 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 biểu tượng sẽ được đặt. Nếu biểu tượng được chỉ định dưới dạng từ điển, thì hình ảnh được dùng sẽ được chọn tuỳ thuộc vào mật độ pixel của màn hình. Nếu số lượng điểm ảnh hình ảnh vừa với một đơn vị không gian màn hình bằng scale, thì một hình ảnh có kích thước scale * 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. Xin lưu ý rằng details.imageData = foo tương đương với details.imageData = {'16': foo}.

ShowAction

Chrome 97 trở lên

Một thao tác sự kiện khai báo đặt thao tác trên thanh công cụ 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 thao tác này mà không cần quyền của máy chủ lưu trữ. 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 các đ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

ShowPageAction

Không dùng nữa kể từ Chrome 97

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 trong khi các điều kiện tương ứng được đáp ứ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. 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 các đ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

Sự kiện

onPageChanged

Cung cấp Declarative Event API bao gồm addRules, removeRules và getRules.

Điều kiện