通过google chrome内容脚本注入CSS。Manifest.json失败,但javascript成功?

通过google chrome内容脚本注入CSS。Manifest.json失败,但javascript成功?,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在向YouTube页面注入一些JavaScript和CSS。似乎表明这应该是可能的。我做错什么了吗?这是YouTube的事吗?还是内容脚本中的注入被破坏了 "content_scripts": [ { "matches": ["http://www.youtube.com/watch?v*"], "css": ["ChromeExtension/css/inject.css"], "js": ["Shared/js/thirdParty/jqu

我正在向YouTube页面注入一些JavaScript和CSS。似乎表明这应该是可能的。我做错什么了吗?这是YouTube的事吗?还是内容脚本中的注入被破坏了

  "content_scripts": [
    {
      "matches": ["http://www.youtube.com/watch?v*"],
      "css": ["ChromeExtension/css/inject.css"],
      "js": ["Shared/js/thirdParty/jquery.js", "ChromeExtension/js/inject.js"]
    }
  ],

  "web_accessible_resources": [
    "ChromeExtension/css/inject.css",
    "ChromeExtension/icon.png"
  ]
这是我的相关manifest.json

现在,当我通过我的content_脚本请求inject.css时,我甚至没有在youtube.com上看到请求。但是,如果我将CSS文件定义为可通过web访问的资源,那么我可以通过javascript加载CSS,如下所示:

var link = document.createElement('link');
link.href =  chrome.extension.getURL('ChromeExtension/css/inject.css');
link.rel = 'stylesheet';
document.documentElement.insertBefore(link);

有什么明显的原因吗?

尝试在内容脚本中避免相对路径,将所有JS和CSS代码放在根路径中,然后重试

"content_scripts": [
    {
      "matches": ["http://www.youtube.com/watch?v*"],
      "css": ["inject.css"],
      "js": ["jquery.js", "inject.js"]
    }
]
如果您有许多文件,并且不想干扰文件夹结构,则可以在加载时使用编程注入:

例:

可能重复的
onload = function (){
    chrome.tabs.executeScript(null, {file: "path"});
}