Javascript Firefox扩展在文档中显示图像

Javascript Firefox扩展在文档中显示图像,javascript,firefox-addon,Javascript,Firefox Addon,是否可以在不违反安全约束的情况下在当前文档中显示本地图像 示例:图像位于chrome://myExtension/content/2.png $myImg=jQuery(“myImg”,doc) $myImg.attr(“src”chrome://beSure/content/2.png"); 错误控制台:安全错误:处的内容可能无法加载或链接到chrome://myExtension/content/2.png. 非本地链接的工作示例: $myImg=jQuery(“myImg”,doc) my

是否可以在不违反安全约束的情况下在当前文档中显示本地图像

示例:图像位于
chrome://myExtension/content/2.png

$myImg=jQuery(“myImg”,doc)

$myImg.attr(“src”chrome://beSure/content/2.png");

错误控制台:安全错误:处的内容可能无法加载或链接到chrome://myExtension/content/2.png.

非本地链接的工作示例:

$myImg=jQuery(“myImg”,doc)

myImg.attr(“src”http://cdn1.iconfinder.com/data/icons/classic-cars-by-cemagraphics/128/minicar_128.png");


图像来自有效的url,所以这是确定的。但是如何显示本地图像呢?

您的chrome软件包需要在
chrome.manifest
中声明
contentAccessible
标志,请参阅。默认情况下,不再允许网页从
chrome://
加载图像,这以前允许网页通过加载图像来检测已安装的扩展

另一种可能是使用
image.src
属性,而不是设置属性:

var myImg = doc.getElementById("myImg");
myImg.src = "chrome://beSure/content/2.png";

这应该是可行的,因为这里您的(特权)脚本直接设置图像位置。另一方面,属性更改是异步处理的,因此这是使用网页的权限来完成的。

如果要使用jQuery创建新元素,请确保使用正确的上下文

var $tr = $('tr', content.document);
$tr.append($('<td>New cell</td>')); // BAD
var$tr=$('tr',content.document);
$tr.append($('newcell'));//坏的
会起作用,但新细胞的行为会很奇怪。例如,当您在上下文菜单中单击鼠标右键时,将不会看到上下文菜单

要解决此问题,请在创建新DOM节点时使用文档的上下文

$tr.append($('<td>New cell</td>', content.document)); // GOOD
$tr.append($('newcell',content.document));//好
通过这样做,您可以根据需要使用
chrome://
-url。
当然,您还必须按照Wladimir Palant的回答中所述启用
contentAccessible

我之前考虑过这个问题,并尝试设置
.src
属性,但它不起作用。我需要的是你的第一个建议,将
contentAccessible
标志设置为
yes
。我在更新扩展时简要地读了一下,但没有读到。谢谢你的回答。