我正在使用Mozilla的Add-on SDK开发一个附加组件,我发现需要对某些文本进行HTML编码(换掉&符号和&
等效的特殊字符)。您可以使用DOM通过调用document.createElement()
并向其添加文本(激发浏览器对文本进行编码)在JavaScript中执行此操作。麻烦的是,在特权代码(main.js
)中没有DOM,因此无法访问这些功能,甚至无法使用像jQuery这样的库。这里有最好的做法吗?如何才能访问通常需要document
的全局main.js
对象的功能?
答案 0 :(得分:1)
如果我理解正确,您希望用实际字符替换HTML实体(&
和类似物)。到目前为止,您的解决方案是:
var text = "foo&bar";
var element = document.createElement('foo');
element.innerHTML = text;
text = element.textContent;
您可以使用DOMParser而不是使用文档的DOM(并冒着无意中运行某些脚本的风险) - 它将解析文本而不会产生任何副作用。不幸的是,从DOMParser
访问main.js
需要chrome authority,但除此之外代码很简单:
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;