0

私は Mozilla のアドオン SDK を使用してアドオンに取り組んでおり、一部のテキストを HTML エンコードする必要があることに気づきました (アンパサンドと特殊文字を&同等のものに置き換えます)。DOM を使用して JavaScript でこれを行うには、DOM を呼び出しdocument.createElement()てテキストを追加します (ブラウザーにテキストのエンコードを促します)。問題は、特権コード ( main.js) に DOM がないため、これらの機能にアクセスする方法がなく、jQuery などのライブラリを使用する方法さえないことです。ここにベストプラクティスはありますか? document通常はからグローバル オブジェクトを必要とする機能にアクセスするにはどうすればよいmain.jsですか?

4

1 に答える 1

1

私の理解が正しければ、HTML エンティティ (&および類似のもの) を実際の文字に置き換える必要があります。そして、これまでの解決策は次のとおりです。

var text = "foo&bar";
var element = document.createElement('foo');
element.innerHTML = text;
text = element.textContent;

ドキュメントの DOM を使用する (意図せずにスクリプトを実行する危険を冒す) 代わりに、DOMParserを使用できます。これは、副作用なしでテキストを解析します。残念ながら、DOMParserからのアクセスにはクロム権限main.jsが必要ですが、それ以外のコードは単純です。

var text = "foo&bar";
var {Cc, Ci} = require("chrome");
var parser = Cc["@mozilla.org/xmlextras/domparser;1"]
               .createInstance(Ci.nsIDOMParser);
text = parser.parseFromString(text, "text/html").documentElement.textContent;
于 2012-10-02T05:17:04.443 に答える