0

サーバーからFirefoxアドオンに送信されるHTMLをparseHTML、Mozillaアドオンレビューアによって呼び出される関数を介して渡すように求められました。問題の方法は、このXULスクールチュートリアルに記載されています。

ただし、私のコンテンツスクリプトではtypeof parseHTML == "undefined"。これは、私のアドオンがXULではなくアドオンSDKを使用して構築されているためだと思います。

SDKで構築されたアドオンがこのメソッドにアクセスできないのは正しいですか?SDKに同等の方法はありますか?

4

1 に答える 1

1

もちろん、この関数は未定義です。グローバルに定義されたヘルパーではなく、コードで定義する必要があるものです(コード例を参照)。アクセスする必要のあるnsIParserUtilsインターフェースを使用します。SDKベースの拡張機能では、そのためにchrome権限を使用します。

var {Cc, Ci} = require("chrome");
var parser = Cc["@mozilla.org/parserutils;1"].getService(Ci.nsIParserUtils);
var sanitized = parser.sanitize(html, parser.SanitizerAllowStyle);

コンテンツスクリプトを使用している場合は、もちろんそれを使用することはできません。HTMLコードをアドオンに送信し、そこでサニタイズして、コンテンツスクリプトに送り返す必要があります。これはオプションですが、そもそも使用innerHTMLしないなどの他の可能性を検討することをお勧めします(必要なのが要素にテキストを設定することだけである場合textContentは、安全な代替手段です)。

補足:XULチュートリアルはかなり古いものですが、この特定のページは1年前にMDNにインポートされただけであり、それ以降、履歴に従って定期的に更新されています。したがって、これは最新のものであり、アドオンSDKを明示的に意味するものではありません(実際のほとんどのMDN記事のように)。

于 2012-11-09T07:02:17.577 に答える