3

У меня в настоящее время проблема с расширением, которое я разрабатываю с помощью SDK Firefox Add-on. Для некоторого базового контекста расширение выполняет скрипты контента, используя page-mod api в sdk. На каждом из скриптов содержимого в саму страницу вводится еще один javascript (мы будем называть их скриптами страниц). Чтобы выполнить некоторые сложные задачи, javascript, введенный на страницу, может связываться с скриптом контента и затем, в свою очередь, запрашивает фоновый процесс расширения. Из-за сложности расширения, когда он автоматически обновляется, можно попасть в состояние, в котором на данном контент-скрипте выполняется несколько сценариев страниц, выполняющих один и тот же код.Расширение расширения дополнительного расширения SDK для Firefox только после перезагрузки

Что мне интересно, возможно, если расширения, созданные с помощью SDK Add-on, могут быть принудительно обновлены только после перезагрузки. Это означало бы, что расширение не будет перезагружено, даже если автообновление происходит до тех пор, пока пользователь не перезапустит свой браузер Firefox.

Если это невозможно, любые другие решения будут отличными.

+0

Хорошая практика заключается в том, что аддон выполняет процедуру выключения (которая выполняется до обновления, в основном: она не отображает старую версию и устанавливает новую версию), вы должны удалить все, что вы ввели. это добавило преимущества, если аддон отключен и повторно включен, он не удваивает вещи и т. д., если вы манипулировали javascript на странице, просто есть функция, чтобы вернуть его обратно. см. этот аддон здесь: [ghForkable] (https://addons.mozilla.org/en-US/firefox/addon/ghforkable/). В inject.js у него есть функция, которая запускается при выключении, поэтому она возвращает все обратно к тому, как это было. – Noitidart

ответ

2

Хотя я согласен с @ комментарий Noitidart, вы можете вводить свои скрипты содержания от main.js только при перезапуске так:

const { loadReason } = require('sdk/self'); 
if (loadReason==='startup') { 
    //Inject the scripts 
} 

Вы должны убедиться, что сценарии содержание старой версии в может общаться с новыми фоновыми скриптами без взлома, что будет больно тестировать. См. here для других причин нагрузки.

Смежные вопросы