2013-03-27 46 views
3

我试图将JS和CSS注入YouTube页面。我能够注入JS,但在注入CSS时看不到效果。我是在做一些不正确的事情还是YouTube以某种方式限制我?似乎无法将CSS注入YouTube?

这里是我的manifest.json的相关部分:

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

我看到所有注入适当的JS,但与CSS没有效果。我的CSS没有出现已在所有注入:

enter image description here

UPDATE:“重要”

好奇..注入此代码的工作,但我也试图适用于所有的CSS属性。这两种方法有不同效果,这些效果与StackOverflow上提供的其他解决方案相反。

我有这个更大的成功,但至于为什么更简明的定义失败仍然好奇:

var style = document.createElement('link'); 
style.rel = 'stylesheet'; 
style.type = 'text/css'; 
style.href = chrome.extension.getURL('ChromeExtension/css/inject.css'); 
document.head.appendChild(style); 
+0

'!重要的'将成为我事实上的建议。奇怪的确如此... – 2013-03-27 05:14:49

+0

是的同意。我测试的CSS只是body {background-color:#000!important; } – 2013-03-27 05:21:55

回答

0

没有必要使用!important,只要确保你在你的CSS有较高的特异性重写已经存在的内容。如果你看看body的风格,你应该看到类似这样的东西:enter image description here

这表明正在应用css,刚被覆盖。改变你的CSS像

body.ltr{ 
    background-color: #000; 
} 

将工作得很好。

编辑: 最重要的是,这个问题可能实际上是匹配模式中的?。对我而言,http:///www.youtube.com/watch*工作,而http:///www.youtube.com/watch?*不工作。至于为什么这会影响注入css,但不是js我不知道。