为什么这个剪贴板代码不能通过Mozilla验证?

时间:2013-01-26 03:35:32

标签: firefox-addon clipboard

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

  Gecko 16中已经更改了

nsITransferable

     

警告:nsITransferable界面已更改为更好的支持   私人浏览模式。实例化对象后,您应该调用   调用任何其他函数之前的init函数。   有关详情,请参阅https://developer.mozilla.org/en-US/docs/Using_the_Clipboard   信息。

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的example here中的Transferable函数,但获得了相同的非验证报告。

其中一位Mozilla 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");

验证器不报告任何错误 - 只是这个警告。一切正常。 Mozilla更新了他们的Gecko引擎,他们希望devlopers能够匹配新标准。

在我的使用中,我们希望能够使用可能从应用程序外部获取的剪贴板内容,因此我们确实希望使用null而不是{{1来调用init函数}}

任何建议都会很棒!

1 个答案:

答案 0 :(得分:2)

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