我试图在文件:// * URIs上使用Jetpack的addon-kit/page-mod,但似乎它不允许我在加载我的东西之前验证URI是否以目标为目标。
没错。但是,您可以执行与page-mod
模块相同的操作,即收听document-element-inserted
observer notification。沿着这些路线的东西:
var events = require("sdk/system/events");
var urls = require("sdk/url");
events.on("document-element-inserted", function(event)
{
var window = event.subject.defaultView;
if (!window) // XBL document?
return;
var url = urls.URL(window.document.URL);
if (url.scheme == "file")
{
// A file:/// URL was loaded, do something with this window
}
});
参考:system/events
module,url
module。
我必须测试该URI是否以目标或文件为目标。
的url
模块还可以让你得到的文件路径,然后你可以使用io/file
module访问它:
var files = require("sdk/io/file");
var path = urls.toFileName(url);
var isDir = files.exists(path) && !files.isFile(path);
如果URI的目标是一个目录,我有以防止Firefox生成目录列表,并显示我自己的目录列表。
这是困难的部分。我认为你不能阻止Firefox生成目录列表,但调用window.stop()
应该具有相同的效果。然后,您可以将您自己的内容动态添加到窗口中。您可以使用files.list(path)
方法获取目录条目列表:
window.stop();
var entries = files.list(path);
for (var i = 0; i < entries.length; i++)
addEntry(window, path, entries[i]);
非常感谢!这正是我所寻找的:-) – 2012-08-07 13:28:05
“观察员服务”库不再存在 – msangel 2015-10-19 23:40:34
@msangel:当然,这些代码示例是古老的。我将它们改为使用现代SDK模块的功能。 – 2015-10-20 09:09:46