#firefox #firefox-addon #firefox4
#firefox #firefox-дополнение #firefox4
Вопрос:
Firefox 4 предоставляет некоторые события для определения того, когда пользователь удаляет расширение. Я могу заставить onUninstalling
сработать (когда пользователь нажимает, чтобы удалить расширение), но я не могу заставить что-либо произойти при onUninstalled
срабатывании (которое должно произойти после перезагрузки).
Components.utils.import("resource://gre/modules/AddonManager.jsm");
AddonManager.addAddonListener({
onUninstalled: function(addon){
//does not work
alert("uninstalled!");
},
onUninstalling: function(addon){
//works as expected
alert("uninstalling!");
}
});
В конечном итоге я надеюсь показать страницу после того, как пользователь удалит мое расширение. Я бы предпочел сделать это после onUninstalled, если бы мог.
Ответ №1:
Метод onUninstalled
вызывается после удаления расширения, поэтому ваше расширение не может получить свое собственное событие удаления, оно больше не может его получать. Однако вы можете получить уведомление об удалении других дополнений, в этом смысл этого события. Глядя на исходный код, кажется, есть дополнительная проблема — это уведомление отправляется только для дополнений, которые не требуют перезапуска. Это имеет смысл, учитывая, что перезапуск может радикально изменить ситуацию, поскольку внешние приложения добавили или удалили дополнения в каталоге extensions. Таким образом, Firefox даже не пытается сообщить об изменениях, которые произошли, пока он не был запущен, все слушатели должны просто перечитать список дополнений при каждом запуске браузера.
Подводя итог, вы должны использовать «классическое» расширение onUninstalling
, хотя это событие не гарантирует, что расширение будет удалено (пользователь все еще может отменить свой выбор). Загружаемые расширения (те, которые не требуют перезапуска, см.https://developer.mozilla.org/en/Extensions/Bootstrapped_extensions ) сделайте это проще, метод uninstall()
в их bootstrap.js будет вызвано, даже если расширение отключено. Однако превратить ваше расширение в загружаемое не всегда просто, к этому прилагается ряд проблем: http://adblockplus.org/blog/how-many-hacks-does-it-take-to-make-your-extension-install-without-a-restart
Комментарии:
1. Отличное объяснение! Спасибо за продуманный ответ.