Firefox addon 为什么赢了';这个剪贴板代码通过Mozilla验证了吗?

Firefox addon 为什么赢了';这个剪贴板代码通过Mozilla验证了吗?,firefox-addon,clipboard,Firefox Addon,Clipboard,药膏!当我在我的插件上尝试Mozilla时,它会出现以下与我处理剪贴板使用相关的错误: 壁虎16中的已更改 警告:界面已更改为更好的支持 私人浏览模式。实例化对象后,应该调用 在调用任何其他函数之前,先对其执行init函数。 查看更多信息 信息 var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable); if

药膏!当我在我的插件上尝试Mozilla时,它会出现以下与我处理剪贴板使用相关的错误:

壁虎16中的已更改

警告:界面已更改为更好的支持 私人浏览模式。实例化对象后,应该调用 在调用任何其他函数之前,先对其执行
init
函数。 查看更多信息 信息

var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if ('init' in trans){ trans.init(null);};
我不明白

这是我的代码-我显然在调用
trans.init

var clip = Components.classes["@mozilla.org/widget/clipboard;1"].getService(Components.interfaces.nsIClipboard);
if (!clip) return "";

var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
if ('init' in trans){ trans.init(null);};  //<--IT DOESN'T LIKE THIS
if (!trans) return false;
trans.addDataFlavor("text/unicode");
验证器不报告任何错误-只报告此警告。一切正常。Mozilla更新了Gecko引擎,他们希望开发者能够达到新的标准

在我的使用中,我们希望能够使用剪贴板的内容,这些内容可能也是从应用程序外部获得的,因此我们确实希望使用
null
调用init函数,而不是
window


任何建议都很好

trans.init(null)
在某些情况下是有效的,例如您的情况。如果在错误的情况下使用,它还可能导致隐私泄露,因此验证程序会将它的所有使用标记为可能需要更改。因此,在这种情况下,这是一个警告,您可以忽略。

从剪贴板获取数据不受Firefox隐私状态的影响。好吧,我不确定这有什么帮助,但是,谢谢,我想。您编写的代码读取剪贴板内容。然后将加载上下文(而不是null)传递给init函数将使验证器满意,而不会妨碍您访问剪贴板。@paa谢谢,但我尝试了
if('init'in trans){trans.init(window);}但我仍然得到验证错误。非常感谢。AMO的一位编辑告诉我,我可以把它包装成一个尝试-捕捉序列,然后也忽略它,但他从未告诉我为什么我可以忽略它。
var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
trans.init(null);   //<---LOOK HERE
if (!trans) return false;
trans.addDataFlavor("text/unicode");