1

我正在構建Chrome擴展程序,但由於Chrome中的bug導致exclude_matches因CSS失敗而出現問題。我知道有些方法可以使用程序化注入來繞過它,但是這會導致一些性能問題,所以我想知道是否有人可以想出一些方法來重寫我的include_matches,這樣就不會包含我想要的東西排除(因爲任何不匹配的東西都會自動排除)。這是一個遠射,但我想如果有人能做到這一點,他們會在這裏!從工作的一個例子是下面的代碼:如何解決exclude_matches通過重寫include_matches而無需編程注入的錯誤?

{ 
.... 
    "content_scripts": [{ 
     "matches": [ "http://example.com/*" , "http://*.example.com/*" ] 
    }] 
.... 
} 

顯然上面覆蓋上example.com任何聯繫,但我想知道是否有一種方法重寫它以這樣一種方式,URL example.com/z/沒有按不符合規則,但是諸如example.com/z/s/之類的URL仍然可以工作。

基本上,唯一不允許的URL是上述格式(「/z/」)中的一個,所以我想知道是否有方法指定不允許在該位置使用斜槓的URL。儘管聽起來很愚蠢,但我認爲我通過正則表達式思考得太多了,所以任何幫助都是值得讚賞的!

即使我輸入這個,我覺得我可能會被卡住,但值得一試!

回答

1

不幸的是,谷歌的"Match patterns and globs"並不總是像人們所期望的那樣運作。尤其是與?通配符。你會認爲你可以使用http://example.com/?*作爲it's supposed to match "any single character" (and not an empty string)

不管怎麼說,這是一個黑客位,但你可以使用至少 26條include_globs規則,就像這樣:

{ 
    .... 
    "content_scripts": [ { 
     "matches":  [ "http://example.com/*", 
          "http://*.example.com/*" 
     ], 
     "include_globs":[ "*example.com/z/a*", 
          "*example.com/z/b*", 
          "*example.com/z/c*", 
          "*example.com/z/d*", 
     // Etc., etc. 
          "*example.com/z/x*", 
          "*example.com/z/y*", 
          "*example.com/z/z*" 
     ] 
    } ] 
    .... 
} 

唉,規則是大小寫敏感的,所以要根據網站/服務器上,您可能需要複製大寫和國際字符的規則。

相關問題