Расширение Thunderbird. Добавьте поле в панель сообщений. Как бороться с экземплярами Windows? - PullRequest
1 голос
/ 23 февраля 2011

Я разрабатываю расширение туберкулеза.Я добавил поле в messagePane чуть ниже полей "from, subject, to".Поэтому мне нужно правильно обновить значение поля.Я получаю значение от msgHdr.Мой текущий подход заключается в прослушивании события «load» документа messagePane.Работает нормально, когда открывается только одно сообщение в ТБ.Но если открыто несколько сообщений, то каждое окно сообщения получает одно и то же значение поля, поскольку каждое окно вызывает событие «загрузки» последнего загруженного сообщения.Это ошибка.Когда я получаю событие загрузки, как я могу определить msgHdr сообщения, открытого в окне?Это где-то хранится?Есть ли у окон какая-либо личная информация, такая как ручка, URI или что-то еще?Почему инспектор DOM показывает только один узел DOM моего поля, пока он существует в каждой области сообщений?Извините за мешок вопросов, я просто не могу понять весь беспорядок с окнами TB.

Спасибо.

1 Ответ

3 голосов
/ 23 февраля 2011

Окна сообщений имеют глобальную переменную gMessageDisplay, которая имеет свойство displayMessage. displayMessage - это текущее сообщение nsIMsgDBHdr.

Для получения уведомлений при отображении нового сообщения я предлагаю добавить прослушиватель в gMessageListeners:

gMessageListeners.push({
  onStartHeaders: function () {},
  onEndHeaders: function () {},
  onEndAttachments: function () {},
  onBeforeShowHeaderPane: function () {}
});

Выполните свои действия в onStartHeaders или onEndHeaders.

...