Совместимость с расширениями Firefox - PullRequest
4 голосов
/ 13 января 2009

Я встречал посты, в которых говорилось: «Я бы хотел использовать расширение A, но оно не работает с расширением B». Это то, что мне нужно беспокоиться при создании расширения Firefox?

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

Ответы [ 2 ]

3 голосов
/ 15 января 2009

Наиболее распространенной причиной конфликтов расширений является использование общих имен в общем пространстве имен. Например, если два расширения определяют глобальную переменную с именем «log» в оверлее browser.xul, только одно из них будет работать должным образом, так как другое «log» будет перезаписано.

Распространенным решением является выяснение того, какие из ваших идентификаторов будут сброшены в общее пространство, и префиксы к ним с вашим собственным уникальным префиксом.

Для кода JavaScript вы можете (и в любом случае это хорошая идея) поместить свой код в объект:

var myExtension = {
  onLoad: function() { ... },
  ...
}

вместо

function onLoad() {
}

Вот довольно хорошая статья по теме: http://blog.userstyles.org/2007/02/06/avoiding-extension-conflicts/.

Другие конфликты редки и должны быть отлажены в каждом конкретном случае. Например, раньше в Mozilla была ошибка, из-за которой слушатели событий на узле терялись при перемещении узла по DOM. Это вызвало многочисленные конфликты для расширения «Редактор меню», которое позволило пользователю переставлять пункты меню.

1 голос
/ 13 января 2009

Не уверен (конфликт ресурсов - очевидное место для поиска), но вам, возможно, повезет больше, если вы отправите mozilla.dev.extensions

...