0

我被要求通过parseHTMLMozilla 插件审阅者调用的函数将一些 html 从我的服务器发送到我的 Firefox 插件。有问题的方法记录在这个 XUL 学校教程中。

然而,在我的内容脚本中,typeof parseHTML == "undefined". 我相信这是因为我的插件是使用插件 SDK 构建的,而不是 XUL。

用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 教程相当陈旧,但这个特定页面一年前才被导入 MDN - 根据历史,自那以后定期更新。所以它是最新的,只是不明确地用于附加 SDK(实际上就像大多数 MDN 文章一样)。

于 2012-11-09T07:02:17.577 回答