Сначала несколько слов о получении элемента браузера. В Firefox этот элемент имеет идентификатор content
, а не appcontent
. Тем не менее, рекомендуемый способ получить его - переменная window.gBrowser
. В Thunderbird 5 идентификатор элемента браузера изменился, поэтому ваш код перестанет работать - вместо того, чтобы переходить по идентификатору, следует использовать переменную window.messageContent
, которая будет работать как в текущей, так и в будущих версиях. Вместе вы получите:
var browser = null;
if ("gBrowser" in window)
browser = window.gBrowser; // Firefox and SeaMonkey Browser
else if ("messageContent" in window)
browser = window.messageContent; // Thunderbird
else if ("getMessageBrowser" in window)
browser = window.getMessageBrowser(); // SeaMonkey Mail
if (browser)
...
Теперь, что касается прослушивания загрузки страниц, рекомендуемый подход здесь - слушатели прогресса - см. https://developer.mozilla.org/en/Code_snippets/Progress_Listeners.. Вы подключаете слушатель прогресса к браузеру и ищите изменения состояния:
onStateChange: function(aWebProgress, aRequest, aFlag, aStatus)
{
if ((aFlag & Components.interfaces.nsIWebProgressListener.STATE_STOP) &&
(aFlag & Components.interfaces.nsIWebProgressListener.STATE_IS_WINDOW))
{
// A window finished loading
doSomething(aWebProgress.DOMWindow);
}
}