Generic Human 通过急需的链接让我走上了正确的道路。首先是添加一个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 可以更好地满足我的需求。