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
。我在更新扩展时简要地读了一下,但没有读到。谢谢你的回答。