2

データ フォルダに画像があります: data\img\myimage.jpg. コンテンツスクリプトで参照したい。さらに、ホスト ページ (コンテンツ スクリプトが挿入されるページ) の DOM を変更して、そこにその画像を配置したいと考えています。

ここでジェフが言っていることに従おうとしました: http://blog.mozilla.org/addons/2012/01/11/sdk-1-4-known-issue-with-hard-coding-resource-uris/ (私がその問題への他の参照は見つかりませんでした)が、何も機能しませんでした。

アドオンのフォルダから画像を参照するためにページで使用する必要がある URL は何ですか?

4

2 に答える 2

7

データ フォルダーは main.js で使用でき、その URL をコンテンツ スクリプト オプションとして渡すことができます。

main.js からコンソールで URL をプレビューするには:

var data = require("sdk/self").data;
console.log(data.url('img/myimage.jpg'));

main.js のコンテンツ スクリプトに URL を渡すには:

var image_url = data.url('img/myimage.jpg');
...
contentScriptFile: data.url('myScript.js'),
contentScriptOptions: {"image_url" : image_url}
...

コンテンツ スクリプトから URL を表示するには:

alert(self.options.image_url);
于 2014-06-10T21:10:26.633 に答える
2

Jeff がその投稿で述べたように、selfモジュールを使用して、dataディレクトリ内の画像への URL を取得できます。コンテンツ スクリプトでその情報を取得するには、メッセージ(ここでは page-mod の例ですが、すべてのコンテンツ スクリプトと同様)を介して渡してスクリプトと通信するか、コンテンツ スクリプトをインライン化している場合は、'モジュールはコンテンツ スクリプトでselfは使用できませんが、文字列を渡すことは問題ありません。

let url = self.data.url('img/myimage.png');
pageMod({
  contentScript: 'var url = ' + url + ';' + 'console.log(url);',
  include: '*.mozilla.org'
})
于 2013-08-05T15:57:13.147 に答える