2011-02-23 4 views
1

TB 확장 프로그램을 개발 중입니다. messagePane에 "from, subject, to"필드 바로 아래에 필드를 추가했습니다. 그래서 필드 값을 올바르게 업데이트해야합니다. msgHdr에서 값을 가져옵니다. 나의 현재 접근 방식은 messagePane 문서의 "load"이벤트를 수신하는 것이다. TB에 하나의 메시지 만 열면 올바르게 작동합니다. 그러나 열린 메시지가 여러 개있는 경우 모든 창에서 마지막으로로드 된 메시지의 "로드"이벤트가 트리거되므로 모든 메시지 창이 동일한 필드 값을 갖습니다. 그것은 버그입니다. 로드 이벤트를 수신 할 때 창에서 열린 메시지의 msgHdr을 어떻게 확인할 수 있습니까? 그것은 어딘가에 저장되어 있습니까? 창문에 핸들, URI 또는 ​​다른 것과 같은 ID 정보가 있습니까? DOM inspector가 모든 messagePane에있는 동안 내 필드의 하나의 DOM 노드 만 표시하는 이유는 무엇입니까? 죄송합니다. 질문이 많아서 TB 창과 관련된 모든 것을 이해할 수 없습니다.썬더 버드 확장. messagePane에 필드를 추가합니다. Windows 인스턴스를 다루는 방법?

감사합니다.

+0

Firefox의 탭 브라우저와 달리 탭이 지정된 메시지 창은 실제로 하나의 브라우저로만 탭을 전환하면 마지막으로 탭에로드 된 메시지가 다시로드됩니다. – Neil

+0

믿기지 않습니다. 나는 객체 지향적 인 마음이 부자가 될 수 있는지 의심 스럽다. – alehro

답변

3

메시지 창에는 displayMessage 속성을 갖는 전역 변수 gMessageDisplay가 있습니다. displayedMessage는 현재 표시된 메시지의 nsIMsgDBHdr입니다.

새 메시지가 나는 gMessageListeners에 청취자를 추가 제안이 표시 될 때 통지를 얻기 위해

:

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

는 onStartHeaders 또는 onEndHeaders에 조치를 취합니다.

+0

document.getElementById ("messagepane") .contentDocument.URL에 내가 원하는 것을 정확히 포함하고 있습니다. 이제 나는이 모든 변화를 듣고 싶다. 어떻게 할 수 있습니까? contentDocument로드 이벤트를 수신 할 수 있다고 가정합니다. 그러나 contentDocument는 그 자체로 영구적이지 않으므로 아마도 contentDocunt를 변경해야 할 필요가있을 것입니다. 어떻게 할 수 있습니까? – alehro

+0

아니면 단순히 displayedMessage의 변경 내용을 청취 할 수 있습니다. 그러나 나는 아직도 그것을하는 방법을 모른다. – alehro

+0

나는 나의 대답을 연장했다. 희망이 도움이됩니다. – speedball2001

관련 문제