Javascript Thunderbird extension,加载事件似乎只发生一次
我正在尝试编写一个扩展名来自动填充传出消息的主题行 下面的代码似乎只执行一次。它链接到一个chrome://messenger/content/messengercompose/messengercompose.xul 当用户点击“写入”按钮撰写新消息时打开。第一次单击“写入”并在“收件人”字段中输入文本时,主题行将自动填充。但是,如果我关闭“撰写”窗口并打开一个新窗口,则“收件人”字段中不会有已注册的事件侦听器Javascript Thunderbird extension,加载事件似乎只发生一次,javascript,dom,xul,Javascript,Dom,Xul,我正在尝试编写一个扩展名来自动填充传出消息的主题行 下面的代码似乎只执行一次。它链接到一个chrome://messenger/content/messengercompose/messengercompose.xul 当用户点击“写入”按钮撰写新消息时打开。第一次单击“写入”并在“收件人”字段中输入文本时,主题行将自动填充。但是,如果我关闭“撰写”窗口并打开一个新窗口,则“收件人”字段中不会有已注册的事件侦听器 在过去的4天里,我一直在想办法解决这个问题,但就是弄不明白。我对javascrip
在过去的4天里,我一直在想办法解决这个问题,但就是弄不明白。我对javascript和DOM没有太多的经验(主要是java),所以我认为这对一些大师来说可能很容易理解。请帮忙。好吧,我让它工作了。我只花了大约一周的时间进行研究,但这不是我们喜欢编写代码的原因吗。无论如何,解决方案似乎是使用gMsgCompose、状态侦听器和
compose window init
事件,而不是load
事件。就是这样
var myStateListener = {
init: function(e){
gMsgCompose.RegisterStateListener(myStateListener);
},
NotifyComposeFieldsReady: function() {
},
NotifyComposeBodyReady: function() {
execute.addListener();
},
ComposeProcessDone: function(aResult) {
},
SaveInFolderDone: function(folderURI) {
}
};
var execute = {
addListener: function(){
var addrTextbox = document.getElementById("addressCol2#1"); //"to" field
addrTextbox.addEventListener("change", execute.autoFillSubjectLine, false);
},
autoFillSubjectLine: function(e){
var msgSubject = document.getElementById("msgSubject");
msgSubject.value = "text goes here";
}
};
window.addEventListener("compose-window-init", myStateListener.init, true);
var myStateListener = {
init: function(e){
gMsgCompose.RegisterStateListener(myStateListener);
},
NotifyComposeFieldsReady: function() {
},
NotifyComposeBodyReady: function() {
execute.addListener();
},
ComposeProcessDone: function(aResult) {
},
SaveInFolderDone: function(folderURI) {
}
};
var execute = {
addListener: function(){
var addrTextbox = document.getElementById("addressCol2#1"); //"to" field
addrTextbox.addEventListener("change", execute.autoFillSubjectLine, false);
},
autoFillSubjectLine: function(e){
var msgSubject = document.getElementById("msgSubject");
msgSubject.value = "text goes here";
}
};
window.addEventListener("compose-window-init", myStateListener.init, true);