Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript firefox中的getAllBookmarks_Javascript_Firefox_Bookmarks - Fatal编程技术网

Javascript firefox中的getAllBookmarks

Javascript firefox中的getAllBookmarks,javascript,firefox,bookmarks,Javascript,Firefox,Bookmarks,我试图将书签菜单中所有节点的内容放入textbox.value,但只显示最后一个书签。我做错了什么 function AllBookmarks() { var historyService = Components.classes["@mozilla.org/browser/nav-history-service;1"] .getService(Components.interfaces.nsINavHistorySe

我试图将书签菜单中所有节点的内容放入
textbox.value
,但只显示最后一个书签。我做错了什么

function AllBookmarks()
{
    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;
    //var bookmarksMenuFolder = bookmarksService.bookmarksMenuFolder;
    var unfiledBookmarksFolder = bookmarksService.unfiledBookmarksFolder;

    //query.setFolders([toolbarFolder], 1);
    //query.setFolders([bookmarksMenuFolder], 1);
    query.setFolders([unfiledBookmarksFolder], 1);

    var result = historyService.executeQuery(query, options);
    var rootNode = result.root;
    rootNode.containerOpen = true;

    // iterate over the immediate children of this folder
    for (var i = 0; i < rootNode.childCount; i ++) {
      var node = rootNode.getChild(i);
    }

    // close a container after using it!
    rootNode.containerOpen = false;
    var textbox = document.getElementById("MyExtension");
    var title= "Title: " + node.title; // shows the title of URL
    var url= "\nURL: " + node.uri; // shows the URL
    textbox.value = title + url + "\n";
}
函数AllBookmarks()
{
var historyService=Components.classes[“@mozilla.org/browser/nav history service;1”]
.getService(组件.接口.nsINavHistoryService);
var options=historyService.getNewQueryOptions();
var query=historyService.getNewQuery();
var bookmarksService=Components.classes[“@mozilla.org/browser/nav bookmarks service;1”]
.getService(组件.接口.nsinavservice);
//var toolbarFolder=bookmarksService.toolbarFolder;
//var bookmarksMenuFolder=bookmarksService.bookmarksMenuFolder;
var unfiledBookmarksFolder=bookmarksService.unfiledBookmarksFolder;
//query.setFolders([toolbarFolder],1);
//query.setFolders([bookmarksMenuFolder],1);
query.setFolders([unfiledBookmarksFolder],1);
var result=historyService.executeQuery(查询,选项);
var rootNode=result.root;
rootNode.containerOpen=true;
//迭代此文件夹的直接子级
对于(var i=0;i
在注释为“迭代此文件夹的直接子项”的循环中,您可能正确地循环了每个书签,但在转到下一个节点之前,您并没有对每个节点执行任何操作。因此,
节点
变量设置为离开循环时的最后一个节点

此外,您正在为textbox.value赋值,而不是附加到它,因此,即使您对每个节点的数据进行操作,您每次都会对其进行删除,从而只生成最后一个节点的数据(结果相同!)。如果你想建立一个这样的字符串,你必须附加到它,而不是分配给它。一种方法是使用
+=
操作符

因此,代码的最后一部分应该是:

var textbox = document.getElementById("MyExtension");

// iterate over the immediate children of this folder
for (var i = 0; i < rootNode.childCount; i ++) {
  var node = rootNode.getChild(i);
  var title = "Title: " + node.title; // gets the title of URL
  var url = "\nURL: " + node.uri; // gets the URL
  textbox.value += title + ": " + url + "\n"; // note the += (append) operator
}
// close a container after using it!
rootNode.containerOpen = false;
var textbox=document.getElementById(“MyExtension”);
//迭代此文件夹的直接子级
对于(var i=0;i

注意:在许多其他(更严格的)语言中,您发布的代码不会被编译,因为您使用的变量
节点
超出了声明它的“范围”(大括号)。不过,自愿遵守这是一条很好的经验法则:违反这条准则通常意味着你犯了错误,或者需要更仔细地思考你在做什么。在这种情况下,它可能会提醒您注意该问题。

您是否仔细检查并手动格式化了该代码?请在中发布原始代码,选择它并按
{}
按钮,将其格式化为代码。问题是,此代码仅提供书签中的最后一个URL。试图编辑代码,但无法…@user1296544:您正在遍历所有书签节点,但将它们分配给同一个变量-您期望得到什么?我想在textboxGr8 aaaidan thx中获取所有书签要获得帮助,它现在可以工作了,但只能从文件夹unfiledBookmarksFolder。。。。现在我如何连接其他文件夹以将它们全部打印在一起。如你所见,我已经对Toolbar Folder和bookmarks Nufolder的服务发表了评论,但它没有给我任何URL和标题。thx向所有人表示抱歉,关于我的问题,我的信息很差,但我是第一次来这里,我的英语不如你的好。thx向所有好的人发表了评论:)所有书签都解决了问题:))没有问题用户1296544。优秀的英语在这里不是一个要求,只是要注意充分描述情况。仔细写一个问题会得到更多的帮助!包括三件基本的事情:说你做了什么(通常是代码),你期望发生什么,以及实际发生了什么。