[英]Chrome Extension applying to more URLs than it should be
因此,我正在嘗試進行擴展,使其僅適用於說www.google.com/bbb及其子頁面,例如www.google.com/bbb/ccc,而不適用於www.google.com/aaa。
我的清單具有以下權限:
"permissions": ["tabs", "http://www.google.com/bbb*"],
但這仍然適用於www.google.com之下的任何頁面,而不僅僅是我想要的www.google.com/bbb。
所有這些都在background.js中運行。
從docs來看還不是很清楚,但是(可能是bug或功能)可以在manifest的permissions
屬性中聲明的主機匹配模式並不關心路徑:
"[scheme]:[host]/*"
它僅適用於scheme
和host
並且將忽略path
部分。
由於您似乎是通過語法進行注入的,因此可以根據路徑手動進行過濾:
/* In `manifest.json` */
...
"permissions": [
"tabs",
"http://www.google.com/"
],
...
/* In `background.js` */
// ...some event was captured, involving tab <tabX>...
...
var urlRegex = /^http:\/\/www.google.com/bbb/;
if (urlRegex.test(tabX.url)) {
injectCSS(tabX.id);
} // ...else do not inject CSS
...
注意 :如果沒有“ http://www.google.com/ ”權限,此方法同樣可以很好地工作,但是包含它的效率更高,因為它減少了背景頁面必須檢查(和拒絕)的URL數量。 即,只需檢查以“ http://www.google.com/ ”開頭的網址
我知道這是一個古老的問題,但這在長時間的搜尋之后對我有所幫助...(╭ರ_•́)
您可以將文件添加到清單文件的"content_scripts"
中,並使用其"matches"
屬性,就像編寫"permissions"
URL一樣。 然后使用其"exclude_matches"
, "exclude_globs"
和"include_globs"
屬性(其中“ globs”是您要包括或排除的URL片段)來優化內容腳本匹配 。 所以:
"content_scripts": [
{
"matches": [
"http://www.google.com/bbb/*"
],
"js": [
"src/inject/your_scripts.js"
],
"css": [
"src/inject/your_styles.css"
],
"run_at": "document_end"
}
],
請記住,要實現您的示例,您將需要"run_at": "document_end"
以便在DOM完成之后,但在加載諸如圖像和框架之類的子資源之前(根據上面的鏈接)立即注入文件。 希望這對某人有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.