Greasemonkey - 图像没有显示

vol*_*ron 3 javascript css greasemonkey background-image

在Greasemonkey中,我正在尝试使用在线查找的图像的本地副本.图像暂时存储在C:\ temp中.

这不起作用:

var b = document.body;
b.style.background = '#ccc url("file:///C:/temp/bg.jpg") repeat-x top left';
Run Code Online (Sandbox Code Playgroud)

在Firebug中,我可以将鼠标悬停在样式窗口中的路径上,图像将弹出,显示图像在那里并且路径正确,但Firefox只是没有显示它.我甚至尝试重绘页面:

  setTimeout(function(){element.className = element.className;},500);
Run Code Online (Sandbox Code Playgroud)

如果我使用原始http url(http://somedomain/bg.jpg)的路径,它将起作用,但试图避免这种情况.我不确定为什么渲染本地图像时出现问题.

Bro*_*ams 8

Greasemonkey提供了一种方法,可以在损害您的PC安全性的情况下执行此操作(请重新打开安全检查,有大量网站等待利用这些漏洞).

这是一种方法:

  1. 为获得最佳结果,请使用Greasemonkey用户脚本管理器(CtrlShiftA)卸载旧版本的脚本(如果有).

  2. 将所需的图像复制到包含脚本源的任何文件夹,而不是配置文件目录中安装的脚本.

    例如,如果您的脚本C:\myScripts\,则复制bg.jpg到该文件夹​​.不要将temp文件夹用于脚本源.

  3. 将这些行添加到脚本的元数据部分:

    // @resource MyBG_Image bg.jpg
    // @grant    GM_getResourceURL
    
    Run Code Online (Sandbox Code Playgroud)
  4. 然后您可以在脚本中使用此代码:

    var b = document.body;
    b.style.background = '#ccc url("' + GM_getResourceURL ("MyBG_Image") + '") repeat-x top left';
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在通过用Firefox打开文件来安装脚本,例如,在FF中使用File - > Open File菜单(或CtrlO)打开C:\myScripts\MyScript.user.js
    Greasemonkey将提示(重新)安装脚本,然后本地文件bg将起作用.