【发布时间】:2020-04-20 03:51:50
【问题描述】:
我想为 Thunderbird 编写一个扩展来修改消息显示(例如插入/替换文本/标记/图像)。
不幸的是,缺少文档(由于最近的更改?)。
https://developer.mozilla.org/en-US/docs/Mozilla/Thunderbird/Thunderbird_extensions
过时了https://developer.thunderbird.net/
没有有用的例子(还)
一些例子可以在
找到基于https://github.com/thundernest/sample-extensions/tree/master/messageDisplay
我修改了background.js
browser.messageDisplay.onMessageDisplayed.addListener((tabId, message) => {
console.log(`Message displayed in tab ${tabId}: ${message.subject}`);
console.log(message.id);
browser.messages.getFull(message.id).then((messagepart) => {
console.log(messagepart);
body = messagepart['parts'][0]['parts'][0]['body'];
console.log(body);
body += "modified!";
console.log(body);
});
browser.windows.getCurrent().then((window)=>{
console.log(window.type);
});
browser.tabs.getCurrent().then((tab)=>{
console.log("tab",tab);
});
});
这为我提供了消息正文(使用魔术索引),但预期更改不会反映在消息显示中。
返回的窗口类型是normal,而不是messageDisplay。tab 是 undefined 尽管添加了权限
"permissions": [
"messagesRead",
"activeTab",
"tabs",
"tabHide"
],
但我认为这是因为脚本以 background 运行。
所以我需要在内容上运行脚本/访问选项卡,然后提供一些关于如何修改显示的消息内容的提示(我不想修改消息)。
我在哪里可以找到与
等效的文档- https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts
特定于 Thunderbird?
在 manifest.json 中指定 content_scripts 会导致“错误:重新加载插件时出错 messageDisplay@sample.extensions.thunderbird.net:未定义”。
来自background 的executeScript() 似乎也不起作用,即使指定了tabId。
【问题讨论】:
-
Background.js 在后台运行只是为了添加监听器;我认为你的听众在前台运行。那么您要做的是用您的正文变量替换显示的消息?我看到了一个 getDisplayedMessage 函数,但不是一个集合,所以看起来这是不可能的。 Content_scripts 是将您的脚本加载到页面上,这样应该可以工作 - 也许您的清单中的文件名存在拼写错误。既然你有当前标签的 tabID,为什么不调用 get(tabID) 而不是 getCurrent()。
标签: javascript thunderbird thunderbird-webextensions