0

我正在使用 Mozilla 的 Add-on SDK 开发一个插件,并且我遇到了对一些文本进行 HTML 编码的需要(将与号和特殊字符换成它们的&等价物)。您可以使用 DOM 在 JavaScript 中通过调用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;

您可以使用DOMParser而不是使用文档的 DOM(并冒着无意中运行某些脚本的风险)——它将解析文本而没有任何副作用。不幸的是,访问DOMParserfrommain.js需要chrome 权限,但除此之外,代码很简单:

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 回答