我正在开发TB扩展。我在“from,subject,to”字段下面的messagePane中添加了字段。 所以我需要正确更新字段值。我从msgHdr获得了价值。我目前的方法是监听messagePane文档的“加载”事件。当在TB中只打开一条消息时,它工作正常。 但是如果有几个打开的消息,那么每个消息窗口都会获得相同的字段值,因为每个窗口都会触发上次加载消息的“加载”事件。这是错误。 当我收到加载事件时,如何确定窗口中打开的消息的msgHdr?它存放在某个地方吗?有窗口任何身份信息,如句柄,uri或其他什么?为什么DOM检查器在每个messagePane中只显示我的字段的一个DOM节点?很抱歉一袋问题,我只是无法理解整个TB窗口的混乱。
感谢。
答案 0 :(得分:3)
消息窗口具有全局变量gMessageDisplay,其属性为displayedMessage。 displayedMessage是当前显示的消息的nsIMsgDBHdr。
为了在显示新消息时收到通知我建议为gMessageListeners添加一个监听器:
gMessageListeners.push({
onStartHeaders: function () {},
onEndHeaders: function () {},
onEndAttachments: function () {},
onBeforeShowHeaderPane: function () {}
});
在onStartHeaders或onEndHeaders上执行操作。