1

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

显然,这可以使用全局变量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 ;    

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

gDBView 未定义

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

4

1 回答 1

1

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

于 2012-06-16T22:40:24.917 回答