0

Mozilla Validator 刚刚向我报告:

E4X 已弃用/已删除

错误:不再可能在大多数上下文之间传递 E4X 对象,包括不同的 chrome 窗口或 JS 模块。E4X 将被 Gecko 20(或可能更早)完全删除。有关更多信息,请参阅 https://developer.mozilla.org/en-US/docs/E4X

现在,错误出现在这一行:

Components.utils.import("resource://gre/modules/Services.jsm");
const XUL = Namespace("xul", "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

Mozilla Validator 指向一个页面,该页面建议将此作为解决方案

警告:E4X 已过时。在 Firefox 17 中默认禁用网页(内容),在 Firefox 20 中默认禁用 chrome,并将在 Firefox 21 中删除。请改用 DOMParser/DOMSerializer 或非本机 JXON 算法。

var response = xmlhttprequest.responseText; // bug 270553
response = response.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, ""); // bug 336551
var e4x = new XML(response);

我在这里有点不合群,不知道该怎么办。任何线索将不胜感激。我该如何使用它?

4

1 回答 1

0

啊,是代码串的第二行。

问题出在这里(AMO 编辑之一向我建议):

const XUL = Namespace("xul", "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");

定义常量是访问 E4X 对象的内容。我从来没有在我的任何代码中使用过这个常量——它就在那里,因为我在原来的插件示例中看到了它,然后把它复制了过来。

在我删除它之后,验证器不再抱怨。当我提交更新的插件时,它通过并获得了正式批准。

于 2013-02-14T22:35:39.693 回答