Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Thunderbird extension,加载事件似乎只发生一次_Javascript_Dom_Xul - Fatal编程技术网

Javascript Thunderbird extension,加载事件似乎只发生一次

Javascript Thunderbird extension,加载事件似乎只发生一次,javascript,dom,xul,Javascript,Dom,Xul,我正在尝试编写一个扩展名来自动填充传出消息的主题行 下面的代码似乎只执行一次。它链接到一个chrome://messenger/content/messengercompose/messengercompose.xul 当用户点击“写入”按钮撰写新消息时打开。第一次单击“写入”并在“收件人”字段中输入文本时,主题行将自动填充。但是,如果我关闭“撰写”窗口并打开一个新窗口,则“收件人”字段中不会有已注册的事件侦听器 在过去的4天里,我一直在想办法解决这个问题,但就是弄不明白。我对javascrip

我正在尝试编写一个扩展名来自动填充传出消息的主题行

下面的代码似乎只执行一次。它链接到一个chrome://messenger/content/messengercompose/messengercompose.xul 当用户点击“写入”按钮撰写新消息时打开。第一次单击“写入”并在“收件人”字段中输入文本时,主题行将自动填充。但是,如果我关闭“撰写”窗口并打开一个新窗口,则“收件人”字段中不会有已注册的事件侦听器


在过去的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);