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);
}
}
Это решает проблему (пока), хотя я неЯ думаю, что это правильный подход. Любые достижения по решению :).