В моем расширении Firefox событие onUninstalled, похоже, не срабатывает
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!");
}
});
В конечном итоге я надеюсь показать страницу после того, как пользователь удалит мое расширение. Я бы предпочел сделать это после удаления, если смогу.
1 ответ
Метод onUninstalled
вызывается после того, как расширение было удалено - поэтому ваше расширение не может получить собственное событие удаления, его больше нет рядом, чтобы его получить. Однако вы можете получить уведомление об удалении других надстроек, в этом и заключается смысл этого события. Глядя на исходный код, кажется, что есть дополнительный улов - это уведомление отправляется только для надстроек, которые не требуют перезапуска. Это имеет смысл, учитывая, что перезапуск может радикально изменить ситуацию, поскольку внешние приложения добавляют или удаляют надстройки в каталоге расширений. Так что 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