`

火狐扩展开发:添加书签功能的封装

阅读更多

这几日需要写一个给火狐浏览器增加书签的功能,需要实现给指定的书签文件夹添加文件夹和网址,封装了一些原生的方法。

 

参考资料:

 1.XPCOM nsINavBookmarkObserver (火狐开放书签接口)
 2.XPCOM nsINavBookmarksService (火狐开放书签接口)

 3.Code Snippets Bookmarks (官方示例)

 

 

第一步:引入firefox的Bookmark API的常量;

var bmsvc = Components.classes["@mozilla.org/browser/nav-bookmarks-service;1"]
    .getService(Components.interfaces.nsINavBookmarksService);
var htService = Components.classes["@mozilla.org/browser/nav-history-service;1"].
    getService(Components.interfaces.nsINavHistoryService);
var ioService = Components.classes["@mozilla.org/network/io-service;1"]
    .getService(Components.interfaces.nsIIOService);

var menuFolder = bmsvc.bookmarksMenuFolder; // 书签菜单文件夹
var toolbarFolder = bmsvc.toolbarFolder; // 书签工具栏文件夹

 

 

第二步:给根书签工具栏根目录添加书签;

function addUrl(name, url) {
   var uri = ioService.newURI(url, null, null);
   if (!bmsvc.isBookmarked(uri)) {//检测网址是否存在
        bmsvc.insertBookmark(bmsvc.toolbarFolder, uri,bmsvc.DEFAULT_INDEX, name);//添加书签
  }
}
 

 

 

第三步:给指定目录添加书签文件夹;

function addFolderUrl(folderType, folderName) {
 var query = htService.getNewQuery();
 var options = htService.getNewQueryOptions();
 query.setFolders([toolbarFolder], 1);
 var result = htService.executeQuery(query, options);
 var rootNode = result.root;
 var childFolder = 0;
 rootNode.containerOpen = true;
 //检测是否有同名的文件夹
 for (var i = 0; i < rootNode.childCount; i++) {
  var node = rootNode.getChild(i);
  if (node.type == node.RESULT_TYPE_FOLDER && node.title == folderName) {
      childFolder = node.itemId;
 //创建文件夹
      var newFolderId = bmsvc.createFolder(folderType, folderName, bmsvc.DEFAULT_INDEX);
      break;
     }
 }
  rootNode.containerOpen = false;
};
 
 

第四步:删除指定url的书签 ;

function remove(url){
        var uri = ioService.newURI(url, null, null);
        var bookmarksArray = bmsvc.getBookmarkIdsForURI(uri, {});
        bmsvc.removeItem(bookmarksArray);
    },

 

 

分享到:
评论

相关推荐

    Firefox火狐浏览器官方85.0b2-mac版本pkg安装包

    Firefox火狐浏览器,作为全球知名的开源网络浏览器,以其强大的安全性能、丰富的扩展插件以及高度的自定义性深受用户喜爱。本文将详细解析Firefox 85.0b2的mac版本pkg安装包,帮助Mac用户顺利进行安装与使用。 首先...

    Firefox火狐浏览器官方Setup 86.0b5-win64版本exe安装包

    3. **自定义扩展**:Firefox支持大量的插件和扩展,用户可以根据自己的需求定制浏览器功能。 4. **同步功能**:通过Firefox账户,用户可以在不同设备间同步书签、历史、密码和打开的标签页。 5. **跨平台**:Firefox...

    Firefox火狐浏览器官方66.0.2-win32版本msi安装包

    标题中的“Firefox火狐浏览器官方66.0.2-win32版本msi安装包”表明这是一个针对Windows 32位系统的Firefox浏览器的官方更新版本,版本号为66.0.2。Firefox是由Mozilla公司开发的一款开源网络浏览器,以其安全性、...

    Firefox火狐浏览器官方5.0b7-mac版本dmg安装包

    标题中的“Firefox火狐浏览器官方5.0b7-mac版本dmg安装包”指的是Mozilla Firefox的特定版本,5.0b7,这是专为Mac操作系统设计的。Firefox是一款开源、免费的网络浏览器,以其安全性、隐私保护和高度可定制性而闻名...

    Firefox火狐浏览器官方2.0.0.10-mac版本dmg安装包

    Firefox 2.0.0.10版本提供了多标签浏览、书签管理、历史记录、下载管理等功能,同时支持各种插件和扩展,可以根据个人需求定制浏览器功能。此外,其内置的拼写检查和反钓鱼保护机制为用户提供了额外的安全保障。 五...

    Firefox火狐浏览器官方80.0b2-mac版本pkg安装包

    在描述中提到的“Firefox 80.0b2.pkg”是Firefox火狐浏览器的Mac OS安装程序包,它是以pkg格式封装的,这种格式是苹果系统特有的,用于分步骤安装应用程序。pkg文件实质上是一个包含多个文件和安装脚本的自解压档案...

    Firefox火狐浏览器官方Setup 66.0.1-win64版本msi安装包

    Firefox火狐浏览器,作为全球知名的开源网页浏览器,以其强大的安全性能、丰富的扩展插件以及对Web标准的良好支持,赢得了广大用户的青睐。本次我们关注的是其66.0.1-win64版本的msi安装包,这是一款专为Windows 64...

    Firefox火狐浏览器官方79.0b1-mac版本pkg安装包

    Firefox火狐浏览器,作为全球知名的开源浏览器之一,一直以来以其高度定制化、安全性以及强大的扩展功能深受用户喜爱。本文将深入探讨Firefox 79.0b1 Mac版本的pkg安装包,解析其特性、安装流程以及在Mac系统中的...

    Portable_Firefox

    它被封装在名为"Portable_Firefox_8.0.1.zip"的压缩文件中,方便用户在不同设备上使用,无需在每台电脑上进行正式安装。这个版本的Firefox特别适合那些经常需要在不同计算机上工作或者希望保持个人浏览设置和书签...

    Firefox火狐浏览器官方87.0b5-mac版本dmg安装包

    Firefox火狐浏览器是一款深受用户喜爱的开源网络浏览器,其官方87.0b5-mac版本专为Mac OS操作系统设计。这个版本号中的"87.0b5"表示这是87.0版本的第五个beta(测试)版本,旨在在正式发布前收集用户反馈并进行性能...

    fx-cjs:Firefox附加组件的通用JS

    通过分析其功能、应用场景及实现原理,我们将更全面地理解如何利用这一工具提升Firefox扩展开发的效率和质量。 首先,我们需要明确什么是Firefox附加组件。Firefox附加组件是Firefox浏览器的一种自定义功能,它们...

    bookmarklets-源码.rar

    - 大多数现代浏览器都支持书签脚本,包括Chrome、Firefox、Safari和Edge。 - 但某些高级特性可能在旧版本的浏览器中无法工作,因此编写时需要注意浏览器兼容性问题。 8. **自定义与扩展**: - 用户可以根据自己...

    linksync:用于远程 URL 同步的 Firefox 工具栏指示器

    1. **初始化**:用户安装并启用 `LinkSync` 扩展后,首次启动时,它会向服务器发送 GET 请求获取当前的书签列表,并将这些书签添加到 Firefox 的书签系统中。 2. **实时监测**:`LinkSync` 监听浏览器的书签变化事件...

    fxapom:与Selenium WebDriver兼容的页面对象模型和Firefox帐户实用程序

    FXAPOM(Firefox Accounts Page Object Model)是专为Firefox浏览器设计的一个强大的库,它结合了Selenium WebDriver的功能和页面对象模型的设计模式,旨在简化Web自动化测试,特别是与Firefox账户相关的操作。...

    自己做的个浏览器,完全可以用的

    2. **开源项目利用**:大多数个人开发者会基于现有的开源项目,如Chromium或Firefox,进行定制。这些项目提供了丰富的API和文档,可以快速构建功能齐全的浏览器。 3. **安全性和隐私**:自制浏览器需要考虑用户的...

    C#网页浏览器

    4. 自定义功能扩展:除了基础的浏览功能,开发者还可以利用C#的强大力量添加自定义功能,如书签管理、下载管理、隐私模式等。 三、开发流程 1. 创建项目:在Visual Studio中选择WinForms或WPF模板,创建一个新的C#...

    Jquery实现设为首页和加入收藏功能

    在浏览器环境下,“设为首页”功能通常涉及到修改用户的浏览器书签或快捷方式,而“加入收藏”则是将当前页面添加到浏览器的收藏夹中。由于这些操作受到浏览器安全策略的限制,开发者无法直接执行,但可以通过提示...

    chrome浏览器

     Google Chrome是一款开源软件,借鉴了苹果的WebKit(Safari使用的引擎)、Mozilla的Firefox及其他相关应用。  主要特性:  ·Chrome浏览器基于开源的Webkit,其中包含谷歌Gears。  ·Chrome提供了浏览器扩展框架...

    wetab-新标签页@latest.zip

    1. **浏览器兼容性**:湿拔插件是否仅支持Chrome,还是也兼容Firefox、Opera等其他浏览器,这通常取决于插件的开发技术。 2. **隐私政策和数据安全**:使用任何浏览器插件都应关注其隐私政策,确保插件不会收集不必...

    web浏览器 c#实现

    6. **界面设计**:C#中的Windows Forms或WPF(Windows Presentation Foundation)可以用来构建用户界面,提供类似于Chrome、Firefox等常见浏览器的交互体验。这包括创建按钮、文本框、菜单栏等控件,以及响应用户的...

Global site tag (gtag.js) - Google Analytics