Addon SDK - работники контекстного меню и пейдж-мод

Я работал над контекстным меню, которое связывается с модом страницы и сталкивается с проблемой.

Я могу отправить сообщение, щелкнув правой кнопкой мыши на странице / вкладке, пока я не обновляю страницу. Когда я обновляю страницу, создается новый работник, и контекстное меню не может связаться с ним.

У меня теперь есть два идентичных рабочих, но это, как будто старый истек. Это означает, что этот цикл в onMessage: не работает, потому что он забирает первого работника.

for (index = 0; index < workers.length; index += 1) {
    if (workers[index].tab.index === tabs.activeTab.index) {
    workers[index].port.emit("rightClick", string, ss.storage.product);
    }
}

Я искал, чтобы удалить старого работника при обновлении, но, кажется, нет никакой возможности сделать это. Я что-то упускаю из-за работы с рабочими?

Я получаю сообщение об ошибке: Ошибка: страница в данный момент скрыта и больше не может использоваться, пока она снова не станет видимой.

Это согласуется с тем фактом, что в отношении работника я сейчас смотрю на новую страницу в той же вкладке. Я думал, что worker.on ('отделить», function () {}) должен был справиться с этим, но, похоже, это только при закрытии вкладки.

Любой совет будет принят во внимание.

добавленной Хорошо, после небольшого перерыва я решил использовать функцию detachWorker, рекомендованную в другом месте для detach. Я поместил его в верхней части моего объекта pageMod, как показано ниже

// Clean up duplicate worker
for (index in workers) {
    if(workers[index].url === worker.url && workers[index].tab.index === worker.tab.index) {
        detachWorker(workers[index], workers);
    }
}

Это решает проблему (пока), хотя я неЯ думаю, что это правильный подход. Любые достижения по решению :).

Ответы на вопрос(3)

Ваш ответ на вопрос