0

我是一个主要的菜鸟,所以我会尽力解释这一点。Anywho,我正在学习扩展开发的步骤,我想将 Greasemonkey 脚本和 Firefox 附加组件中的元素融合在一起。到目前为止,我设法让一些东西正常工作,但我似乎无法弄清楚如何使脚本中的图像和 CSS 文件指向 Chrome:Skin文件夹。
当前代码是:

var newstyle = document.createElement('link');
newstyle.rel = 'stylesheet';
newstyle.href = 'http://example.com/test.css';
newstyle.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(newstyle);

function main(){
var assets = Math.floor(Math.random()*8);
$('<div id="jumpFloatingButton" style="width:80px;height:30px;background-color:#21a0f1;background-image:url(http://colourlovers.com.s3.amazonaws.com/images/patterns/2757/2757110.png);position:fixed;right:0px;bottom:0px;background-attachment: scroll;cursor: pointer;"></div>').insertAfter('body *:last');
$('<div id="jumpFloating" style="width:400px;height:500px;position:fixed;bottom:30px;right:0px;border:1px solid black;background-image:url(http://colourlovers.com.s3.amazonaws.com/images/patterns/2757/2757110.png);"><ul id="jumpFloatingList" style="overflow:auto;max-height:500px;max-width:400px;margin-left:0px;"></ul></div>').insertAfter('#jumpFloatingButton');

上述代码中的链接是从其他来源链接的文件的示例。我想知道的是如何从加载项文件夹而不是其他 URL 中创建链接点?像:

newstyle.href = 'chrome://folder/skin/overlay.css';

或者

$('<div id="jumpFloatingButton" style="width:80px;height:30px;background-color:#21a0f1;background-image:url(chrome://folder/skin/image.jpg);position:fixed;right:0px;bottom:0px;background-attachment: scroll;cursor: pointer;"></div>').insertAfter('body *:last');

我使用 Netbeans。我的清单

content file jar:chrome/file.jar!/content/
skin special classic/1.0 jar:chrome/special.jar!/skin/ contentaccessible=yes

我试过

var newstyle = document.createStyleSheet('overlay.css');
newstyle.rel = 'stylesheet';
newstyle.href = 'chrome://nb/skin/overlay.css';
newstyle.type = 'text/css';
document.getElementsByTagName('head')[0].appendChild(newstyle);

添加 document.createStyleSheet 会修复它吗?我的编辑

$('<div id="imagestack" style="width:304px;height:64px;background-image:url("chrome://special/skin/nav.png");
4

1 回答 1

1

您需要将您的标记chrome://folder/chrome.manifest从网络访问,否则网页将无法加载它。我看到您已经尝试这样做,但您已添加contentaccessible=yesskin条目中。文档说:

contentaccessible 标志仅适用于内容包:它不能用于区域设置或皮肤注册。但是,匹配的语言环境和皮肤包也会暴露给内容。

这是因为您不能将 chrome 包的一部分标记为可供 Web 访问 - 它要么是全部(内容、皮肤和语言环境),要么什么都没有。所以你chrome.manifest应该看起来像这样:

content file jar:chrome/file.jar!/content/ contentaccessible=yes
skin special classic/1.0 jar:chrome/special.jar!/skin/
于 2012-07-29T16:41:23.877 回答