7

現在、アドオン SDK を使用して Firefox 拡張機能を開発していて、実際の問題にぶつかりました。基本的に、私の拡張機能は、次のようにコンテンツ スクリプトを Web ページに挿入するだけです。

main.js

var pageMod = require("page-mod");
var self = require("self");

pageMod.PageMod({
  include: "http://mail.google.com/mail/*",
  contentScriptFile: [self.data.url("jquery.js"),
                      self.data.url("start.js")],
  attachTo : ["top"]
});

start.js

$('body').append('<div>1</div><img src="insertnote.png" /><div>2</div>');

start.jsとはどちらもinsertnote.pngdata フォルダーにあります。画像以外はすべて動作します。画像タグの実際の URL を取得する方法が見つかりませんでした。相対 URL が機能していないようです。:(

コンテンツスクリプト内にアドオンの内部画像を含めることは可能ですか?それとも、ウェブサーバーへの絶対 URL を使用する必要がありますか?

4

3 に答える 3

2

次のコードは機能するはずです

main.js

var pngurl = self.data.url("insertnote.png");

//inside PageMod constructor
onAttach: function(worker) {
  worker.port.emit("imageurl",pngurl);
}

start.js

self.port.on("imageurl", function(imgurl){
  var img = document.createElement("img");
  img.src = imgurl;
  document.body.appendChild(img);
});

当然、すべてのアセットの URL を含むオブジェクトを 1 つだけ渡す方が効率的です。

于 2012-11-19T21:15:34.597 に答える
0

問題は、相対 URL がドキュメント (この場合はページ) に対して相対的に解釈されることです。文字列としてページに直接配置しているためです。

一般に、アドオンが明示的に指定している場合、ページはアドオン内の画像にリンクできます。そのためには、適切な chrome:// URI を使用する必要があります。

于 2012-11-19T04:47:50.197 に答える