Сценарии Greasemonkey работали в Firefox 16.0.2, но не в версии 17.0.1 или новее?

У меня есть старые пользовательские скрипты с jQuery, которые отлично работают в Firefox 16, но перестали работать с выпуском Firefox 17.

Итак, я использовал версию 16.0.2 до сегодняшнего дня, когда я пытался обновить до 18, и та же проблема сохраняется. Сначала я подумал, что это может быть Greasemonkey, и безуспешно попробовал версию 1.6 и надстройку Scriptish. Поэтому я попытался обновить версию jQuery, но не нашел решения. Это не один скрипт, это все они с любым кодом jQuery. Также об ошибках на консоли не сообщается.

Кто-нибудь знает, что происходит?

Некоторые ошибки, о которых сообщает консоль firebug:

o.attachEvent("on"+e, h);

от:

window.addListener=function(o, e, h){
try{
o.attachEvent("on"+e, h);
}catch(a){
o.addEventListener(e, h, false);
}
} 

Еще одна ошибка в другом скрипте

GM_addStyle ( (<><![CDATA[

от:

GM_addStyle ( (<><![CDATA[
    #dtl {
        position:           absolute;
        top:                0;
        right:              0;      
    }
    #dtl iframe {
        width:              950;
        height:             680;
        border:             none;
    }

]]></>).toString () );

1 ответ

Решение

jQuery и Greasemonkey отлично работают в Firefox 17 и 18 ( при условии, что песочница активна); Это не проблема.

Единственная важная вещь, которая изменилась с FF 17, которая затронула многие скрипты Greasemonkey, это то, что Firefox прекратил поддержку E4X.

С E4X мы могли бы использовать CDATA для создания отличных многострочных строк, например:

GM_addStyle ( (<><![CDATA[
    #someNodeID {
        position:           fixed;
        top:                0;
        right:              0;
    }
]]></>).toString () );


Но теперь, когда E4X больше не поддерживается, мы должны реорганизовать каждый бит кода, который использовался CDATA, чтобы использовать Javascript строки escape (\), вот так:

GM_addStyle ( '                         \
    #someNodeID {                       \
        position:           fixed;      \
        top:                0;          \
        right:              0;          \
    }                                   \
' );


При использовании этого побега, вы должны обратить особое внимание на то, как вы смешиваете ' а также " цитаты.

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