在火狐附加组件面板中显示远程图像
Displaying remote images in a firefox add-on panel
我正在尝试在FireFox附加面板中显示远程图像,但是src
属性正在从如下所示的内容转换:
http://example.com/image.jpg
像这样:
resource://addon_name/data/%22http://example.com/image.jpg%22
无法确定我是否违反了安全策略。
在我的附加脚本(index.js)中,我使用 sdk/request API 检索图像 URL,并将它们传递给我的内容脚本(data/my-panel.js)。我的 data/my-panel.js 文件正在使用从 index.js 传递的 URL 在我的面板文件 (data/popup.html) 中创建 DOM 元素(包括图像)。以下是相关的代码位:
index.js
var Request = require("sdk/request").Request;
var panel = require("sdk/panel").Panel({
width: 500,
height: 500,
contentURL: "./popup.html",
contentScriptFile: "./my-panel.js"
});
Request({
url: url,
onComplete: function(response) {
// Get the JSON data.
json = response.json;
// Launch the popup/panel.
panel.show();
panel.port.emit("sendJSON", json);
}
}).get();
data/my-panel.js
var title;
var desc;
var list;
var titleTextNode;
var descTextNode;
self.port.on("sendJSON", function(json) {
json.docs.forEach(function(items) {
title = JSON.stringify(items.sourceResource.title);
desc = JSON.stringify(items.sourceResource.description);
img = JSON.stringify(items.object);
console.log(img);
var node = document.createElement("li"); // Create a <li> node
var imgTag = document.createElement("img"); // Create a <img> node
imgTag.setAttribute('src', img);
imgTag.setAttribute('alt', desc);
imgTag.style.width= '25px';
titleTextNode = document.createTextNode(title);
descTextNode = document.createTextNode(desc);
node.appendChild(titleTextNode); // Append the text to <li>
node.appendChild(descTextNode); // Append the text to <li>
document.getElementById("myList").appendChild(node); // Append <li> to <ul> with id="myList"
document.getElementById("myImgs").appendChild(imgTag);
});
});
console.log(img)
行正确显示 URL,但不在弹出窗口中显示.html...
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<ul id="myList"></ul>
<p id="myImgs"></p>
</body>
</html>
如何使图像的src
属性直接指向远程 URL?谢谢!
我发现我做错了什么。在 img URL 上使用 JSON.stringify() 在其周围添加了双引号。删除它修复了图像:
img = items.object;
我不太确定 SDK 权限,但作为最后的手段,您可以将远程 url 转换为资源 URI,如下所示 -
var res = Services.io.getProtocolHandler("resource").QueryInterface(Ci.nsIResProtocolHandler);
res.setSubstitution("rawr", Services.io.newURI('http://www.bing.com/',null,null));
// now try navigating to resource://rawr it will load bing
然后你可以加载resource://rawr
它应该可以工作。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- nodejs-expressjs上传图像并显示它们
- 使用JSP从服务器检索和显示图像
- 角度:在ng重复上切换图像
- 画廊图像未显示
- Phonegap-(安卓/iphone)多个图像的图像库出现问题
- Javascript排序的图像弹出窗口..可以't单独弹出
- 画布数据到图像
- Windows8应用程序(html&Javascript):从图片库(除了文件选择器)显示图像的另一种方式
- 使图像在单击时展开到不大于浏览器
- Html页面上的多个Base64图像和平滑加载
- UIAutomation放大图像
- JavaScript 使用 url 上传图像(图像已经在互联网上,不同的域)
- 使用JavaScript更改背景图像图像以进行图像幻灯片
- 上传前无法显示图像图像
- javascript图像加载线程和事件处理程序线程
- 编辑图像/图像详细信息-替换按钮缺失
- 在缩略图上更改滑块图像.图像改变一秒钟,然后恢复
- 在jQuery中移动图像(图像裁剪)
- 使用尽可能多的独立线程检索5个图像- jquery ajax