Я знаю, что API расширений Chrome не имеет официального способа определить, когда пользователь удаляет ваше расширение (что обидно).
Я использую прослушиватель port.onDisconnect со своей страницы сценария содержимого после подключения к фоновой странице, чтобы определить, когда пользователь удаляет / отключает мое расширение. Согласно документации, port.onDisconnect должен срабатывать только тогда, когда расширение больше не существует (или когда port.disconnect явно вызывается с фоновой страницы), что должно охватывать сценарий отключения / удаления.
Это на самом деле отлично работает на моей машине. Всякий раз, когда я удаляю или отключаю свое расширение, port.onDisconnect запускается, как и положено (один раз для открытой вкладки). Проблема в том, что я вижу, как это событие было запущено МНОГИЕМИ из моих реальных пользователей. Я на 99% уверен, что не так много пользователей отключают / удаляют мое расширение (я вижу, что они выполняют другие задачи позже с моим расширением, и мои номера установки расширения не показывают, что многие деинсталлируются).
Это наводит меня на мысль, что есть другое условие, которое запускает port.onDisconnect, кроме отключения / удаления расширения. Я не могу воспроизвести это вообще на моей машине. На моей машине port.onDisconnect запускается только когда я отключаю / удаляю расширение, и я нигде не вызываю явно port.disconnect с моей фоновой страницы.
Итак, мой вопрос: какие могут быть условия, которые запускают port.onDisconnect, кроме того, что пользователь отключает / удаляет расширение? Я думал, что обновление версии может вызвать такое поведение, но я проверил его на своей машине, и я не думаю, что это все.
Есть идеи?