說明
使用 chrome.contentSettings API 變更設定,控管網站是否能使用 Cookie、JavaScript 和外掛程式等功能。一般來說,內容設定可讓您根據個別網站自訂 Chrome 的行為,而非全域設定。
權限
contentSettings如要使用 API,必須在擴充功能的資訊清單中聲明 "contentSettings" 權限。例如:
{
  "name": "My extension",
  ...
  "permissions": [
    "contentSettings"
  ],
  ...
}
概念與用法
內容設定模式
您可以使用模式指定各項內容設定適用的網站。舉例來說,
https://*.youtube.com/* 會指定 youtube.com 和所有子網域。內容設定模式的語法與比對模式相同,但有幾項差異:
- 如果是 http、https和ftp網址,路徑必須是萬用字元 (/*)。如果是file網址,路徑必須完整指定,且不得包含萬用字元。
- 與比對模式不同,內容設定模式可以指定通訊埠編號。如果指定通訊埠號碼,模式只會比對具有該通訊埠的網站。如未指定通訊埠號碼,模式會比對所有通訊埠。
模式優先順序
如果多個內容設定規則適用於特定網站,系統會優先採用模式較明確的規則。
舉例來說,下列模式會依優先順序排序:
- https://www.example.com/*
- https://*.example.com/*(符合 example.com 和所有子網域)
- <all_urls>(比對所有網址)
萬用字元有三種,會影響模式的具體程度:
- 通訊埠中的萬用字元 (例如 https://www.example.com:*/*)
- 配置中的萬用字元 (例如 *://www.example.com:123/*)
- 主機名稱中的萬用字元 (例如 https://*.example.com:123/*)
如果某個模式在一個部分比另一個模式更具體,但在另一個部分則較不具體,系統會依下列順序檢查不同部分:主機名稱、配置、通訊埠。舉例來說,下列模式會依優先順序排序:
- https://www.example.com:*/*指定主機名稱和架構。
- *:/www.example.com:123/*不高,因為雖然指定了主機名稱,但未指定配置。
- https://*.example.com:123/*較低,因為雖然指定了通訊埠和配置,但主機名稱中含有萬用字元。
主要和次要模式
決定要套用哪種內容設定時,系統會考量的網址取決於內容類型。
舉例來說,系統會根據網址列中顯示的網址,套用 contentSettings.notifications 設定。這個網址稱為「主要」網址。
部分內容類型可將額外網址納入考量。舉例來說,系統會根據 HTTP 要求的網址 (在本例中為主要網址) 和多功能方塊中顯示的網址 (稱為「次要」網址),決定網站是否可以設定 contentSettings.cookies。
如果多個規則都有主要和次要模式,系統會優先套用主要模式較明確的規則。如果多個規則的主要模式相同,系統會優先套用次要模式較明確的規則。舉例來說,下列主要/次要模式配對清單會依優先順序排序:
| 優先順序 | 主要模式 | 次要模式 | 
|---|---|---|
| 1 | https://www.moose.com/*、 | https://www.wombat.com/* | 
| 2 | https://www.moose.com/*、 | <all_urls> | 
| 3 | <all_urls>、 | https://www.wombat.com/* | 
| 4 | <all_urls>、 | <all_urls> | 
圖片內容設定不支援次要模式。
資源 ID
資源 ID 可讓你為特定內容類型子類型指定內容設定。
目前只有 contentSettings.plugins 內容類型支援資源 ID,資源 ID 用於識別特定外掛程式。套用內容設定時,系統會先檢查特定外掛程式的設定。如果找不到特定外掛程式的設定,系統會檢查外掛程式的一般內容設定。
舉例來說,如果內容設定規則的資源 ID 為 adobe-flash-player,模式為 <all_urls>,即使模式 https://www.example.com/* 更具體,系統仍會優先採用資源 ID 為 adobe-flash-player 且模式為 <all_urls> 的規則。
您可以呼叫 contentSettings.ContentSetting.getResourceIdentifiers() 方法,取得內容類型的資源 ID 清單。傳回的清單可能會隨著使用者電腦上安裝的外掛程式組合而異,但 Chrome 會盡量確保外掛程式更新前後的 ID 保持穩定。
範例
如要試用這個 API,請從 chrome-extension-samples 存放區安裝 contentSettings API 範例。
類型
AutoVerifyContentSetting
列舉
「allow」 
 
「block」 
 
CameraContentSetting
列舉
「allow」 
 
「block」 
 
「ask」 
 
ClipboardContentSetting
列舉
「allow」 
 
「block」 
 
「ask」 
 
ContentSetting
屬性
- 
    關閉void 清除這項擴充功能設定的所有內容規則。 clear函式如下所示:(details: object) => {...} - 
    詳細資料物件 - 
    範圍範圍 選用 要清除設定的位置 (預設值:一般)。 
 
- 
    
 - 
            returnsPromise<void> Chrome 96 以上版本
 
- 
    
- 
    getvoid 取得指定網址配對的目前內容設定。 get函式如下所示:(details: object) => {...} - 
    詳細資料物件 - 
    無痕模式布林值 選填 是否要檢查無痕工作階段的內容設定。(預設為 false) 
- 
    primaryUrl字串 要擷取內容設定的主要網址。請注意,主要網址的意義取決於內容類型。 
- 
    resourceIdentifier更具體的內容類型 ID,用於擷取設定。 
- 
    secondaryUrl字串 選填 要擷取內容設定的次要網址。預設為主要網址。請注意,次要網址的意義取決於內容類型,且並非所有內容類型都會使用次要網址。 
 
- 
    
 - 
            returnsPromise<object> Chrome 96 以上版本
 
- 
    
- 
    getResourceIdentifiersvoid getResourceIdentifiers函式如下所示:() => {...}- 
            returnsPromise<ResourceIdentifier[]> Chrome 96 以上版本
 
- 
            
- 
    setvoid 套用新的內容設定規則。 set函式如下所示:(details: object) => {...} - 
            returnsPromise<void> Chrome 96 以上版本
 
- 
            
CookiesContentSetting
列舉
「allow」 
 
「block」 
 
「session_only」 
 
FullscreenContentSetting
值
「allow」 
 
ImagesContentSetting
列舉
「allow」 
 
「block」 
 
JavascriptContentSetting
列舉
「allow」 
 
「block」 
 
LocationContentSetting
列舉
「allow」 
 
「block」 
 
「ask」 
 
MicrophoneContentSetting
列舉
「allow」 
 
「block」 
 
「ask」 
 
MouselockContentSetting
值
「allow」 
 
MultipleAutomaticDownloadsContentSetting
列舉
「allow」 
 
「block」 
 
「ask」 
 
NotificationsContentSetting
列舉
「allow」 
 
「block」 
 
「ask」 
 
PluginsContentSetting
值
「block」 
 
PopupsContentSetting
列舉
「allow」 
 
「block」 
 
PpapiBrokerContentSetting
值
「block」 
 
ResourceIdentifier
使用資源 ID 的內容類型只有 contentSettings.plugins。詳情請參閱「資源 ID」。
屬性
- 
    說明字串 選填 資源的說明,方便使用者閱讀。 
- 
    id字串 指定內容類型的資源 ID。 
Scope
ContentSetting 的範圍。其中一種:regular一般設定檔的設定 (如果未在其他位置覆寫,無痕設定檔會沿用這項設定);incognito\_session\_only無痕設定檔的設定,只能在無痕模式工作階段中設定,並在工作階段結束時刪除 (會覆寫一般設定)。
列舉
「regular」 
 
「incognito_session_only」 
 
SoundContentSetting
列舉
「allow」 
 
「block」 
 
屬性
automaticDownloads
是否允許網站自動下載多個檔案。其中一個選項:
allow:允許網站自動下載多個檔案。
block:禁止網站自動下載多個檔案。
ask:網站下載第一個檔案後,如果想自動下載檔案,請先詢問。
預設值為 ask。主要網址是頂層頁框的網址。不會使用次要網址。
autoVerify
是否允許網站使用 Private State Tokens API。allow:允許網站使用 Private State Tokens API。block:禁止網站使用 Private State Tokens API。預設值為 allow。呼叫 set() 時,主要網址模式必須為 <all_urls>。不會使用次要網址。
camera
是否允許網站存取攝影機。其中一個選項:
allow:允許網站存取相機。
block:不允許網站存取相機。
ask:網站想存取相機時詢問。
預設值為 ask。主要網址是指要求存取攝影機的文件網址。系統不會使用次要網址。
注意:如果兩個模式都是「<all_urls>」,「允許」設定就無效。
clipboard
是否允許網站透過 Async Clipboard API 的進階功能存取剪貼簿。「進階」功能包括在使用者手勢後寫入內建格式以外的任何內容,也就是讀取、寫入自訂格式,以及在沒有使用者手勢的情況下寫入。其中一個選項:
allow:允許網站使用進階剪貼簿功能。
block:不允許網站使用進階剪貼簿功能。
ask:網站想使用進階剪貼簿功能時詢問。
預設值為 ask。主要網址是指要求剪貼簿存取權的文件網址。不會使用次要網址。
cookies
是否允許網站設定 Cookie 和其他本機資料。下列其中之一:
allow:接受 Cookie。
block:封鎖 Cookie。
session\_only:只接受目前工作階段的 Cookie。
預設值為 allow。主要網址代表 Cookie 來源的網址。次要網址是頂層頁框的網址。
fullscreen
已淘汰。不再有任何影響。系統現在會自動授予所有網站全螢幕權限。值一律為 allow。
images
是否顯示圖片。其中一個:
allow:顯示圖片。
block:不顯示圖片。
預設值為 allow。主要網址是頂層頁框的網址。次要網址是圖片的網址。
javascript
是否執行 JavaScript。其中一個選項:
allow:執行 JavaScript。
block:不執行 JavaScript。
預設值為 allow。主要網址是頂層頁框的網址。不會使用次要網址。
location
是否允許地理位置。其中一個選項:
allow:允許網站追蹤您的實際位置。
block:不允許網站追蹤您的實際位置。
ask:允許網站追蹤您的實際位置前先詢問。
預設值為 ask。主要網址是要求位置資料的文件網址。次要網址是頂層框架的網址 (可能與要求網址相同或不同)。
microphone
是否允許網站存取麥克風。allow:允許網站存取麥克風。
block:禁止網站存取麥克風。
ask:網站要求存取麥克風時詢問。
預設值為 ask。主要網址是指要求麥克風存取權的文件網址。系統不會使用次要網址。
注意:如果兩個模式都是「<all_urls>」,「允許」設定就無效。
mouselock
已淘汰。不再有任何影響。系統現在會自動授予所有網站滑鼠鎖定權限。值一律為 allow。
notifications
是否允許網站顯示桌面通知。allow:允許網站顯示桌面通知。
block:不允許網站顯示桌面通知。
ask:每當網站要顯示桌面通知時詢問我。
預設值為 ask。主要網址是想要顯示通知的文件網址。不會使用次要網址。
plugins
已淘汰。Chrome 88 版已移除 Flash 支援,因此這項權限不再有任何作用。值一律為 block。系統會忽略對 set() 和 clear() 的呼叫。
popups
是否允許網站顯示彈出式視窗。其中一個選項:
allow:允許網站顯示彈出式視窗。
block:禁止網站顯示彈出式視窗。
預設值為 block。主要網址是頂層頁框的網址。不會使用次要網址。
unsandboxedPlugins
已淘汰。先前這項政策會控管是否允許網站執行未沙箱化的外掛程式,但 Chrome 88 移除了 Flash 代理程序,因此這項權限已不再有任何作用。值一律為 block。系統會忽略對 set() 和 clear() 的呼叫。