5

そのため、FF4とGecko 2で使用するために古い拡張機能を更新する作業を行っていますが、コンポーネントのclassIDが見つからないか正しくないというエラーが発生するという問題が発生しています。

他の誰かが同様の問題を抱えているか、これを回避する方法を知っていますか?

function jsshellClient() {
  this.classDescription = "sdConnector JavaScript Shell Service";
  this.classID = Components.ID("{54f7f162-35d9-524d-9021-965a3ba86366}");
  this.contractID = "@activestate.com/SDService?type=jsshell;1"
  this._xpcom_categories = [{category: "sd-service", entry: "jsshell"}];
  this.name = "jsshell";
  this.prefs = Components.classes["@mozilla.org/preferences-service;1"]
      .getService(Components.interfaces.nsIPrefService)
      .getBranch("sdconnector.jsshell.");
  this.enabled = this.prefs.getBoolPref("enabled");
  this.port = this.prefs.getIntPref("port");
  this.loopbackOnly = this.prefs.getBoolPref("loopbackOnly");
  this.backlog = this.prefs.getIntPref("backlog");
}
jsshellClient.prototype = new session();
jsshellClient.prototype.constructor = jsshellClient;

このためにプロトタイプでgenerateNSGetFactoryを呼び出すと、FF4のエラーコンソールでclassIDについて文句を言うエラーが発生します。同じGUIDを使用しているものは他にないと確信しているので、問題は発生しません。

4

2 に答える 2

2

Fx4のJSXPCOMコンポーネントの重要な変更は、これらをchrome.manifestに登録する必要があることです。変更については、このドキュメントのページを参照してください。

于 2010-10-23T21:09:08.027 に答える
0

XPCOMUtilsで使用される特別なプロパティ(classID、contractIDなど)は、https://developer.mozilla.org/en/XPCOMUtils.jsmのように、コンストラクター関数ではなく、Class.prototypeで定義する必要があります。 #Class_declaration

他の質問については、コメントで投稿しました。それでも関連性がある場合は、必要なコードを提供して、別の質問に投稿してください。

于 2011-01-09T19:50:17.643 に答える