Firefox addon 修改Firefox下载列表的API

Firefox addon 修改Firefox下载列表的API,firefox-addon,Firefox Addon,我想写一个小的firefox插件,它可以检测何时本地删除(或已经删除)下载的文件,并删除firefox下载列表中的相应条目 有人能告诉我相关的api来操作下载列表吗?我似乎找不到它。相关的API是PlacesUtils,它抽象了Places数据库的复杂性 如果您的代码在chrome窗口的上下文中运行,那么您将免费获得一个PlacesUtilsglabal变量。否则(引导、附加SDK等等),您必须导入PlacesUtils.jsm Cu.import(“resource://gre/modules

我想写一个小的firefox插件,它可以检测何时本地删除(或已经删除)下载的文件,并删除firefox下载列表中的相应条目


有人能告诉我相关的api来操作下载列表吗?我似乎找不到它。

相关的API是
PlacesUtils
,它抽象了
Places
数据库的复杂性

如果您的代码在chrome窗口的上下文中运行,那么您将免费获得一个
PlacesUtils
glabal变量。否则(引导、附加SDK等等),您必须导入
PlacesUtils.jsm

Cu.import(“resource://gre/modules/PlacesUtils.jsm");
Places
而言,下载的文件只不过是一种特殊的访问页面,并进行了相应的注释。只需一行代码就可以获得所有下载文件的数组

var results=PlacesUtils.annotations.getAnnotationsWithName(“下载/目的地配置”);
由于我们要求提供
destinationflueri
注释,因此
resultarray
的每个元素都将
annotationValue
属性中的下载位置作为
文件:
URI规范字符串保存

这样,您就可以检查文件是否确实存在

函数getFileFromURIspec(fileurispec){ //如果服务在您的上下文中不可用,则Cu.import(“resource://gre/modules/Services.jsm"); var filehandler=Services.io.getProtocolHandler(“文件”).QueryInterface(Ci.nsIFileProtocolHandler); 试一试{ 返回filehandler.getFileFromURLSpec(FileUrSpec); } 捕获(e){ 返回null; } }
getFileFromURIspec
将返回nsIFile的实例,如果规范无效,则返回null,在本例中不应出现这种情况,但健全性检查不会有任何影响。这样,您可以调用
exists()
方法,如果它返回
false
,则
Places
中的关联页面条目可以删除。我们可以通过页面的uri来判断哪个页面是该页面,uri也是
结果的每个元素的一个属性

PlacesUtils.bhistory.removePage(result.uri);
总而言之

var results=PlacesUtils.annotations.getAnnotationsWithName(“下载/目的地配置”);
results.forEach(函数(结果){
var file=getFileFromURIspec(result.annotationValue);
如果(!文件){
//我不知道你该怎么处理这个案子
//询问用户,只是记录,删除,一些组合?
}
否则,如果(!file.exists()){
PlacesUtils.bhistory.removePage(result.uri);
}
});

相关的API是
PlacesUtils
,它抽象了
Places
数据库的复杂性

如果您的代码在chrome窗口的上下文中运行,那么您将免费获得一个
PlacesUtils
glabal变量。否则(引导、附加SDK等等),您必须导入
PlacesUtils.jsm

Cu.import(“resource://gre/modules/PlacesUtils.jsm");
Places
而言,下载的文件只不过是一种特殊的访问页面,并进行了相应的注释。只需一行代码就可以获得所有下载文件的数组

var results=PlacesUtils.annotations.getAnnotationsWithName(“下载/目的地配置”);
由于我们要求提供
destinationflueri
注释,因此
resultarray
的每个元素都将
annotationValue
属性中的下载位置作为
文件:
URI规范字符串保存

这样,您就可以检查文件是否确实存在

函数getFileFromURIspec(fileurispec){ //如果服务在您的上下文中不可用,则Cu.import(“resource://gre/modules/Services.jsm"); var filehandler=Services.io.getProtocolHandler(“文件”).QueryInterface(Ci.nsIFileProtocolHandler); 试一试{ 返回filehandler.getFileFromURLSpec(FileUrSpec); } 捕获(e){ 返回null; } }
getFileFromURIspec
将返回nsIFile的实例,如果规范无效,则返回null,在本例中不应出现这种情况,但健全性检查不会有任何影响。这样,您可以调用
exists()
方法,如果它返回
false
,则
Places
中的关联页面条目可以删除。我们可以通过页面的uri来判断哪个页面是该页面,uri也是
结果的每个元素的一个属性

PlacesUtils.bhistory.removePage(result.uri);
总而言之

var results=PlacesUtils.annotations.getAnnotationsWithName(“下载/目的地配置”);
results.forEach(函数(结果){
var file=getFileFromURIspec(result.annotationValue);
如果(!文件){
//我不知道你该怎么处理这个案子
//询问用户,只是记录,删除,一些组合?
}
否则,如果(!file.exists()){
PlacesUtils.bhistory.removePage(result.uri);
}
});

相关的API是
PlacesUtils
,它抽象了
Places
数据库的复杂性

如果您的代码在chrome窗口的上下文中运行,那么您将免费获得一个
PlacesUtils
glabal变量。否则(引导、附加SDK等等),您必须导入
PlacesUtils.jsm

Cu.import(“resource://gre/modules/PlacesUtils.jsm");
Places
而言,下载的文件只不过是一种特殊的访问页面,并进行了相应的注释。只需一行代码就可以获得所有下载文件的数组

var results=PlacesUtils.annotations.getAnnotationsWithName(“下载/目的地配置”);
由于我们要求提供
destinationflueri
注释,因此
resultarray
的每个元素都将
annotationValue
属性中的下载位置作为
文件保存