gDBView 未定义和 xul

gDBView is not defined and xul

本文关键字:xul 未定义 gDBView      更新时间:2023-09-26

我正在尝试使用XUL编写Thunderbird扩展,XUL是一个自定义按钮,可以访问当前显示的电子邮件正文并对其进行操作。

显然,使用全局变量 gDBView 可以实现这,如在显示邮件用户代理扩展中:

var msgURI = null ;
if ( gDBView )
{
  msgURI = gDBView.URIForFirstSelectedMessage ;
}
if ( msgURI == null )
{
  return ;
}
var messenger = Components.classes["@mozilla.org/messenger;1"].createInstance (Components.interfaces.nsIMessenger ) ;
var msgService = messenger.messageServiceFromURI ( msgURI ) ;

不幸的是,如果在我的扩展中我复制了该行:

msgURI = gDBView.URIForFirstSelectedMessage ;    

我从雷鸟控制台收到以下错误:

gDBView 未定义

发生这种情况有什么原因吗?这是访问邮件正文的最佳(也是正确)方法吗?

正如 Wladimir 正确猜测的那样,您可能在错误的上下文中运行脚本。检查gDBView是否存在的一种简单方法是,在菜单中,点击 Tools > Error Console ,然后粘贴top.opener.gDBView,然后点击 Enter 。这返回(对我来说)[xpconnect wrapped (nsISupports, nsIMsgDBView, nsITreeView)]这意味着对象确实存在。