Разработка расширения Firefox firefox4 - PullRequest
5 голосов
/ 22 октября 2010

Итак, я работаю над обновлением старых расширений для использования с 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, поэтому я не вижу проблемы.

Ответы [ 2 ]

2 голосов
/ 24 октября 2010

Важное изменение в компонентах JS XPCOM в Fx4 заключается в том, что теперь их необходимо зарегистрировать в chrome.manifest, см. Эту страницу документации об изменениях .

0 голосов
/ 09 января 2011

Специальные свойства, используемые XPCOMUtils, такие как classID, contractID и т. Д., Должны быть определены в Class.prototype, а не в функции конструктора, как вы это сделали: https://developer.mozilla.org/en/XPCOMUtils.jsm#Class_declaration

Что касаетсядругой вопрос, который вы разместили в комментарии, пожалуйста, опубликуйте его в другом вопросе, если он все еще актуален, с указанием необходимого кода.

...