もちろん、この関数は未定義です。グローバルに定義されたヘルパーではなく、コードで定義する必要があるものです(コード例を参照)。アクセスする必要のある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記事のように)。