我想在日历代码中打开一个带有gloda对话的新选项卡。
我从错误控制台收到一个错误:未定义的窗口(或未定义的文档),这取决于我使用哪一个来访问tabmail:
let tabmail = window.document.getElementById("tabmail");
let tabmail = document.getElementById("tabmail");
如果js文件包含在覆盖的xul文件中,代码将正常工作。
但是我想在xul之外的代码中使用它。在我的日历代码的某个地方(在我的"addevent"中),相同的代码抛出了错误。这段代码最初是通过右键点击电子邮件调用的,但在日历代码中有几层。
在MDN中,我读到窗口是全局的吗?那么我需要做些什么来添加一个标签呢?如果tabmail被正确引用,这部分可以工作:
tabmail.openTab("glodaList", {
collection: queryCollection,
message: aCollection.items[0],
title: tabTitle,
background: false
});
那么我如何获得tabmail的引用呢?
在发布之前尝试和查看代码确实有一段时间后,在提交问题后意外找到解决方案只需要大约20分钟。
当我在mxr上浏览邮件时,我在一些函数中找到了解决方案:
mail3PaneWindow = Services.wm.getMostRecentWindow("mail:3pane");
if (mail3PaneWindow) var tabmail = mail3PaneWindow.document.getElementById("tabmail");