Каковы различия между Fx 3.x и Fx 4.x, которые заставили многих пользовательских скриптов перестать работать? - PullRequest
1 голос
/ 24 марта 2011

Я разрабатываю скрипты для userscripts.org и только что обновил свой fx с 3.6.16 до 4.0, но многие мои скрипты перестали работать со следующей ошибкой:

Error: Component returned failure code: 0x8007000e (NS_ERROR_OUT_OF_MEMORY) [nsIXPCComponents_Utils.evalInSandbox]
Source code: file:///xxx.user.js

Я знаю, что это сообщение означает некоторый «бесконечный» процесс, но в нем нет номера строки, которая могла бы помочь мне разобраться в этом.

Любая помощь / ответ / ссылка приветствуется.

Операционная система: Windows 7, 64-разрядная Версия Greasemonkey: 0.9.1 Пример скрипта, который не работает: Пользовательские скрипты: Beautifier + Deobfuscator target: http://userscripts.org/scripts/review/58687
(я добавлю больше примеров, как только вернусь с работы домой)

Другие источники, которые заставили меня задуматься о проблеме: Много скриптов больше не работает?

Ответы [ 2 ]

0 голосов
/ 10 сентября 2013

Начиная с Firefox 4, вы не можете использовать RegExp в качестве условия цикла, потому что для каждой итерации будет создаваться новый экземпляр, вызывая бесконечный цикл. (lastIndex = 0)

while (/.../g.exec("...")) {  // used to work
    /* your code goes here */
}

Чтобы этого не происходило, создайте отдельную переменную с RegExp:

var re = /.../g;
while (re.exec("...")) {  // works perfectly
    /* your code goes here */
}
0 голосов
/ 24 марта 2011

Единственная известная мне особенность, которая была удалена в Firefox 4, - это возможность использовать XUL непосредственно на веб-странице (т.е. используя стиль -moz-binding CSS).

Я не знаю, повлияло ли это на ваши сценарии. Он затронул один довольно известный взлом Firefox (см. Переполнение текста: многоточие в Firefox 4? (И FF5) ), но я не знал ни о каком другом влиянии этого изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...