2

軟膏!アドオンでMozilla のValidatorを試すと、クリップボードの使用方法に関連する次のエラーが表示されます。

nsITransferableGecko 16 で変更されました。

警告: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");

TransferableMozilla の例 hereの関数も試しましたが、同じ非検証レポートが表示されます。

Mozilla AMO 編集者の 1 人が、これを正確に書くように私に言いましたが、まだ有効ではありません。

私も試しました、単純に:

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");

Validator はエラーを報告しません。この警告だけです。すべてが正常に機能します。Mozilla は Gecko エンジンを更新し、開発者が新しい標準に対応することを望んでいます。

私の使い方では、おそらくアプリ外から取得したクリップボードの中身も使えるようにしたいので、null代わりにwindow.

どんなアドバイスも素晴らしいでしょう!

4

1 に答える 1

2

trans.init(null)あなたのような状況では有効です。また、間違った状況で使用するとプライバシー リークが発生する可能性があるため、バリデーターは、変更が必要な可能性があるとして、すべての使用にフラグを立てます。したがって、この場合は無視してよい警告です。

于 2013-02-14T15:44:00.943 に答える