【发布时间】:2011-05-09 15:11:50
【问题描述】:
我在 Firefox 扩展程序中使用了一些代码来显示用户的书签,但它不起作用(页面上出现文本“一些文本”,但书签上没有出现),有人知道为什么吗?
代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<title>Page displayed when a user opens a new tab or window</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script type="text/javascript">
function init() {
var historyService = Components.classes["@mozilla.org/browser/nav-history-service;1"]
.getService(Components.interfaces.nsINavHistoryService);
var options = historyService.getNewQueryOptions();
var query = historyService.getNewQuery();
var bookmarksService = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
.getService(Components.interfaces.nsINavBookmarksService);
var toolbarFolder = bookmarksService.toolbarFolder;
query.setFolders([toolbarFolder], 1);
var result = historyService.executeQuery(query, options);
var rootNode = result.root;
rootNode.containerOpen = true;
// iterate over the immediate children of this folder and dump to console
output.innerHTML+='test';
for (var i = 0; i < rootNode.childCount; i ++) {
var node = rootNode.getChild(i);
output.innerHTML+='test'; // not working
output.innerHTML+=("Child: " + node.title + "\n"); //not working
//dump("Child: " + node.title + "\n"); not working
}
// close a container after using it!
rootNode.containerOpen = false
}
</script>
</head>
<body onload="init()">
<p>Some text<p>
<div id="output">
</div>
</body>
</html>
【问题讨论】:
-
“不工作”告诉我们很多 - 如果您更喜欢答案而不是反对票,请更具体
-
Bruno,我一直在关注你的问题,我认为你需要消化更多的 Firefox 教程。我最喜欢的 turorial 是:presentation-slides.googlecode.com/files/…。在 init() 方法中,您尝试在网页上下文中访问 Firefox API(例如书签服务)。那是行不通的。相反,您需要覆盖 browser.xul,注册一个事件处理程序以通知新打开的选项卡,查询书签服务,生成显示书签的 html 代码并显示它。
-
@speedball 感谢您的建议!我将首先学习教程:-)
标签: javascript api firefox firefox-addon