Для наложения FireFox как указать, к какой версии Gecko / FireFox применить его? - PullRequest
1 голос
/ 04 июня 2011

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

Я обнаружил https://developer.mozilla.org/en/Bundles для указания разных файлов, но это, кажется, охватывает только ОС / битность.

Есть ли способ указать, что оверлей применяется только к определенным версиям пользовательского интерфейса?

т.е.Это работает для FF3.6 и более ранних версий, но нарушает FF4

<overlay id="myOverlay"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <dialog id="commonDialog" onload="commonDialogOnLoad(); myLoad();"
        ondialogaccept="myAccept(); return commonDialogOnAccept();">

Это предназначено для диалогов «Вход в домен» и «Вход в FTP», поэтому может помочь и идея сделать его более конкретным.

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Технически, ответ MatrixFrog правильный, вы можете использовать флаги в вашем файле chrome.manifest. Тем не менее, вам лучше учитывать тот факт, что ваш код нарушает Firefox 4 как предупреждение - этот подход не следует использовать, он может нарушить функциональность браузера. Кроме того, что, если второе расширение пытается сделать то же самое? Вы должны расширить встроенную функциональность, а не перезаписывать ее. Ваша цель, очевидно, состоит в том, чтобы запускать собственный код при загрузке обычного диалога. Пожалуйста, рассмотрите следующий подход:

<overlay id="myOverlay"
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

    <script type="text/javascript"><![CDATA[
        window.addEventListener("load", function()
        {
            // Your code here
        }, false);
    ]]></script>
</overlay>

Это решает две проблемы. Во-первых, вам больше не нужно переопределять существующий обработчик для события «load» - addEventListener позволяет регистрировать столько обработчиков событий, сколько вы хотите, в отличие от атрибута / свойства onload. Другая проблема: вы добавляли функцию myLoad () в глобальное пространство имен общего диалога. Если в будущем код Firefox или другое расширение решит использовать то же имя функции, возникнут проблемы. Приведенный выше код полностью устраняет эту проблему, используя анонимную функцию - не может быть конфликтов имен.

1 голос
/ 04 июня 2011

Я сам этого не делал, но думаю, что вы можете добиться этого эффекта, используя флаги в вашем файле chrome.manifest. Смотри https://developer.mozilla.org/en/Chrome_Registration#Manifest_flags

...