Javascript 用于查看消息的ThunderBird事件

Javascript 用于查看消息的ThunderBird事件,javascript,thunderbird,thunderbird-addon,Javascript,Thunderbird,Thunderbird Addon,我试图在Thunderbird的主窗口中显示消息之前对其进行修改。我似乎找不到1)打开/查看新邮件时会触发的事件2)修改邮件显示内容的方法 我相信我需要chrome://messenger/content/messenger.xuloverlay,可以使用监听器,例如: window.addEventListener( "SOME MAGIC HERE", modify_message_handler, true ); 但我不确定该事件是什么,以及我将获得什么对象(消息头?),以及修改显示内容

我试图在Thunderbird的主窗口中显示消息之前对其进行修改。我似乎找不到1)打开/查看新邮件时会触发的事件2)修改邮件显示内容的方法

我相信我需要
chrome://messenger/content/messenger.xul
overlay,可以使用监听器,例如:

window.addEventListener( "SOME MAGIC HERE", modify_message_handler, true );
但我不确定该事件是什么,以及我将获得什么对象(消息头?),以及修改显示内容的容易程度

因此,问题是:

  • 我有正确的套印吗
  • 这可以通过事件来实现吗?如果没有,怎么做
  • 如果是,需要什么事件,它传递什么对象

目前还不清楚您尝试查找的位置,但我将提供一个建议:建议您可以点击一个OnItemPropertyChanged事件来侦听“open”属性,该属性似乎在中定义

不过,这是否只适用于文件夹,还是同时适用于文件夹和邮件,目前尚不清楚;您必须深入挖掘,以确定传入的item对象的属性是否允许您进行更改


希望能带来一些光明;如果您已经了解了这一点,请告诉我们您学到了什么。

如果您想要的是类似于在每条消息上运行的Greasemonkey脚本的内容,您应该:

  • 等待
    窗口的
    加载
    事件
  • 使用
    document.getElementById(“messagepane”)
    检索消息窗格对象
  • 将处理程序绑定到消息窗格的
    DOMContentLoaded
    事件,或类似的事件,如
    load
    ,具体取决于您希望何时调用处理程序
    DOMContentLoaded
    将为您提供Greasemonkey风格的行为
  • 在事件处理程序中,
    event.originalTarget
    是与显示的消息相对应的文档。您可以在这里应用所有常用的DOM修改技术
  • 有关更多详细信息,请参阅文档。

    我将主要讨论您问题中的
    thunderbird extension
    标记

    Thunderbird Extension author有许多现成的工具供您参考


    编辑功能(仅更改标题或整个源代码 从菜单“message”-> “HeaderToolsLite”或消息面板中的关联菜单

    整个源代码的编辑功能应与 注意,因为错误的更改可能会导致显示所有内容时出现问题 文件夹中的邮件



    轻松附加在主窗口中选择的邮件
    附加其他邮件的附件
    附加来自5个常用目录的文件
    以压缩格式附加文件和目录


    添加图形界面以处理 有关“交付状态”的全球和每个帐户的首选项 通知(DSN



    有用链接:
    值得注意的参考文献1:
    值得注意的参考文献2:
    值得注意的参考文献3:

    值得注意的参考文献4:

    普通人类通过急需的链接为我找到了正确的道路。第一件事是添加一个
    load
    事件。我将以我非常原始的理解粘贴一些代码:

    window.addEventListener("load", function load(event) {
            window.removeEventListener("load", load, false);
            myExtension.init();
    }, false);
    
    加载此脚本的覆盖时,运行
    init

    var myExtension = {
      init: function() {
            var appcontent = document.getElementById("appcontent"); // browser app content
            if (appcontent) {
                    appcontent.addEventListener("OMContentLoaded", myExtension.onPageLoad, true);
            }
            var messagepane = document.getElementById("messagepane"); // tunderbird message pane
            if(messagepane) {
                    messagepane.addEventListener("load", function(event) { myExtension.onPageLoad(event); }, true);
            }
      },
    
    init
    中,我添加了一个监听器,每次显示消息时都调用
    onPageLoad
    。我实际上不使用
    appcontent
    案例afaik

      onPageLoad: function(aEvent) {
                    var doc = aEvent.originalTarget;  // doc is document that triggered "onload" event
                    // we can now morph the loaded page
                    // doc.location is a 'Location' object
                    var newDat = mutateBody(doc.body.innerHTML);
                    doc.body.innerHTML = newDat;
                    aEvent.originalTarget.defaultView.addEventListener("unload", function(event) { myExtension.onPageUnload(event); }, true);
      },
    
      onPageUnload: function(aEvent) {
        // No action necessary yet
      }
    };
    

    doc.body.textContents
    似乎是一个明显的元素,但它实际上没有保持格式(该死的HTML)-使用
    innerHTML
    可以更好地满足我的需要。

    你找到了吗?@john.k.doe我没有看到,谢谢。谢谢你的指点。我会回来报告,但可能几天内不会-我现在正在处理一些任务。请查看我的答案以了解我的发现。这似乎是我需要的切入点-我会尝试(在适当的时候)并回来报告。谢谢。有关这方面的Mozilla文档可在以下位置找到:
      onPageLoad: function(aEvent) {
                    var doc = aEvent.originalTarget;  // doc is document that triggered "onload" event
                    // we can now morph the loaded page
                    // doc.location is a 'Location' object
                    var newDat = mutateBody(doc.body.innerHTML);
                    doc.body.innerHTML = newDat;
                    aEvent.originalTarget.defaultView.addEventListener("unload", function(event) { myExtension.onPageUnload(event); }, true);
      },
    
      onPageUnload: function(aEvent) {
        // No action necessary yet
      }
    };