>Форум Mozilla Россия http://forum.mozilla-russia.org/index.php >Разработка http://forum.mozilla-russia.org/viewforum.php?id=18 >Работа с закладками http://forum.mozilla-russia.org/viewtopic.php?id=53524 |
crackpot > 30-01-2012 11:57:22 | |||
Для реализации своих коварных целей потребовалось выгрузить дерево закладок из FF для начала в файл. 1. Есть код. Код, по идее, должен писать содержимое папки "Неподшитые закладки" в файл. Но вместо этого он пишет в файл "Child: 6". Непонятно. Выделить код Код:function testMe() { 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.unfiledBookmarksFolder; query.setFolders([toolbarFolder], 1); var result = historyService.executeQuery(query, options); var rootNode = result.root; rootNode.containerOpen = true; //create proper path for xml file var theFile = "C:\\Users\\Insane\\Documents\\Dropbox\\Dev\\sync-sync\\FF\\8ukmuart.ffRSDev\\extensions\\helloworld@ru.wikiversity.org\\content\\list.txt"; //create component for file writing var file = Components.classes["@mozilla.org/file/local;1"] .createInstance(Components.interfaces.nsILocalFile); file.initWithPath( theFile ); if(file.exists() == false) //check to see if file exists { alert("creating file..."); file.create( Components.interfaces.nsIFile.NORMAL_FILE_TYPE, 420); } //create file output stream and use write/create/truncate mode //0x02 writing, 0x08 create file, 0x20 truncate length if exist var stream = Components.classes["@mozilla.org/network/file-output-stream;1"] .createInstance(Components.interfaces.nsIFileOutputStream); stream.init(file, 0x02 | 0x08 | 0x20, 0666, 0); // iterate over the immediate children of this folder and dump to console for (var i = 0; i < rootNode.childCount; i ++) { var node = rootNode.getChild(i); // dump("Child: " + node.title + "\n"); var content = "Child: " + node.type + "\n"; stream.write(content, content.length); } stream.close(); alert("1"); // close a container after using it! rootNode.containerOpen = false; } 2. Посоветуйте какое-нибудь расширение для FF, в которое можно было бы вставить кусок кода на JS (например тот, что выше) и запустить на выполнение. Передергивать FF после каждого редактирования как-то надоело. 3. В неподшитых закладках у меня приличное количество папок, чего не хватает коду, чтобы отобразить дерево? | |||
hydrolizer > 30-01-2012 18:07:25 | |||
crackpot пишет
crackpot пишет
nsINavHistoryResultNode - MDN:
- все в соответствии. crackpot пишет
1. Сделайте расширение с диалогом, в диалоге располагайте свои скрипты. Не забудьте про настройки nglayout.debug.disable_xul_cache и nglayout.debug.disable_xul_fastload. Подробности здесь: https://developer.mozilla.org/en/Settin … references. okkamas_knife пишет
Нет. User scripts не имеют доступа к chrome context. |