在Greasemonkey中,我正在尝试使用在线找到的图像的本地副本。图像暂时存储在C:\ temp。
中这不起作用:
var b = document.body;
b.style.background = '#ccc url("file:///C:/temp/bg.jpg") repeat-x top left';
在Firebug中,我可以将鼠标悬停在样式窗口中的路径上并弹出图像,显示图像在那里并且路径正确,但Firefox只是没有显示它。我甚至尝试重新绘制页面:
setTimeout(function(){element.className = element.className;},500);
如果我使用原始http url(http://somedomain/bg.jpg)的路径,它将起作用,但试图避免这种情况。我不确定为什么渲染本地图像时出现问题。
答案 0 :(得分:8)
Greasemonkey提供了一种方法来实现这一目标,并且不会损害您PC的安全性(请重新开启安全检查,有大量网站等待利用这些漏洞)。
这是一种方法:
为获得最佳效果,请使用Greasemonkey用户脚本管理器( Ctrl Shift A )卸载旧版本的脚本,如果有的话。
将所需图片复制到包含脚本源的任何文件夹,不 profile directory中已安装的脚本。
例如,如果您的脚本来源位于C:\myScripts\
,请将bg.jpg
复制到该文件夹。不要将temp文件夹用于脚本源。
将这些行添加到脚本的元数据部分:
// @resource MyBG_Image bg.jpg
// @grant GM_getResourceURL
然后您可以在脚本中使用此代码:
var b = document.body;
b.style.background = '#ccc url("' + GM_getResourceURL ("MyBG_Image") + '") repeat-x top left';
现在通过使用Firefox打开文件来安装脚本,例如,在FF中使用文件 - > 打开文件菜单(或按Ctrl O )打开C:\myScripts\MyScript.user.js
Greasemonkey将提示(重新)安装脚本,然后本地文件bg将起作用。
答案 1 :(得分:2)
这是因为您无法从本地文件(file://)以外的其他域添加对本地文件的引用。
错误控制台中显示安全错误消息。 (以防万一你以前没见过)
答案 2 :(得分:1)
Brock Adams是绝对正确的。必须(重新)安装脚本,如他所描述的那样。
将此添加到元数据:
// @resource MyTest_Image animated_gif_test.gif
这个脚本让GM在lacal机器上使用图像
//images[x].src = GM_getResourceURL ("MyTest_Image");
此处有关此方法的更多信息:http://wiki.greasespot.net/GM_getResourceURL
// ==UserScript==
// @resource logo http://www.example.com/logo.png
// ==/UserScript==
var img = document.createElement('img');
img.src = GM_getResourceURL("logo");
document.body.appendChild(img);
答案 3 :(得分:1)
在我添加以下内容之前,我无法让这个工作......
// @grant GM_getResourceURL
答案 4 :(得分:0)
来自:http://www-archive.mozilla.org/releases/mozilla1.7.12/known-issues.html
出于安全原因,Mozilla不允许Web内容链接到本地文件。如下错误:安全错误:网址上的内容可能无法加载或链接到文件:///某些内容将出现在javascript控制台中。如果您需要关注本地路径的链接,建议您将链接拖到位置栏,然后将其拖放到网页上。如果您真的不喜欢安全检查,并且愿意冒险系统中的所有文件并且您的系统可以访问,那么您可以将以下行添加到您的个人profile directory中的user.js。 user_pref(“security.checkloaduri”,false); (Bug 84128)