如何在Firefox扩展中链接到内部图像

How can I link to an internal image within a Firefox extension?

本文关键字:链接 内部 图像 扩展 Firefox      更新时间:2023-09-26

我使用的是Firefox SDK。

下面的代码是有效的,所以至少我知道一切都按预期运行:

document.getElementById("mydiv").src="http://somesite/externalimage.jpg";

然而,Mozilla不批准我的扩展的这个版本,因为我正在链接到一个外部映像。

所以我要做的是链接到扩展插件内的图像(我上传了相同的图像到扩展插件)。

我尝试了以下代码,但没有成功。

document.getElementById("mydiv").src=" + data.url("externalimage.jpg") + ";

那么,如何链接到扩展中的图像呢?

首先,您的语法是错误的,这将出错。应该是:

document.getElementById("mydiv").src = data.url("externalimage.jpg");

您是否包括来自self的数据模块?

var data = require('sdk/self').data;

这是在什么背景下?您的主要SDK代码可以访问data.url函数,但如果这是在内容脚本中,您将无法访问它,您需要通过消息传入值

在main.js 中

// Assuming a pagemod here, but can be any worker
var data = require('sdk/self').data;
var { PageMod } = require('sdk/page-mod');
PageMod({
  include: '*',
  contentScriptFile: data.url('script.js'),
  onAttach: function (worker) {
    worker.port.emit('link', data.url('externalimage.png');
  }
});

在内容脚本中,script.js:

self.port.on('link', function (url) {
  document.getElementById("mydiv").src = url;
});

只需使用相对url。如果html文件和图像文件都位于/data/文件夹中。然后以下内容应该起作用:

document.getElementById("mydiv").src="some-image.jpg"