Почему моя надстройка Firefox не работает после обновления Firefox до версии 50

Я разработал дополнение daneshLink, которое было проверено Firefox. Пользователи установили это дополнение и использовали его. Это дополнение работало, но когда Firefox обновился до версии 50.0, это дополнение не работает.

(Примечание: надстройка не была удалена или отключена после обновления Firefox. Она просто не работает вообще).

var x = content.document.getElementsByTagName('html')[0].innerHTML;
var test = x.match(/>article Id:[0-9a-zA-z]/img);
var url = "> <a href=\"http://mysite.ir/index.jsp?articleID=";
for (var i = 0; i < test.length; i++) {
    x = x.replace(test[i], url +">Download :" + test[i] + "</a>");
}
 content.document.getElementsByTagName('html')[0].innerHTML = x;

1 ответ

Решение

Предоставленного вами кода недостаточно, чтобы понять, в чем проблема, но я могу догадаться. Скорее всего, вы столкнулись с проблемой перехода на многопроцессорный Firefox. Тот факт, что это дополнение наложения и ваше использование content.document Вероятно, вы не отделяете доступ к DOM веб-страниц (используя рабочих) от вашего основного скрипта.

Возможно, вам лучше всего переписать это как WebExtension, если это возможно. Кроме того, вы можете написать его как расширение на основе SDK Add-on. Если вам действительно нужно, чтобы это был надстройка Overlay, можно обеспечить разделение между основными функциями скрипта и доступом к DOM. Однако сделать это не так удобно, как для других типов надстроек.

Возможно, вы сможете сделать текущий код более совместимым, указав:

<em:multiprocessCompatible>false/em:multiprocessCompatible>

в вашем install.rdf. Это должно помешать Firefox включить многопроцессорный режим, когда ваше расширение установлено, или, по крайней мере, использовать совместимые прокладки, которые могут быть достаточными для функционирования вашего дополнения.

Я бы предложил вам прочитать:

Другие вопросы по тегам