如何在crossrider扩展中添加书签?

时间:2014-11-14 20:26:00

标签: jquery bookmarks crossrider

你好我正在开发crossrider扩展。我已经创建了一个按钮

'<button id="xr-bookmark" title="Bookmark button" class="middle"><a id="bookmarkme" href="#" rel="sidebar" title="bookmark this page">Bookmark This Page</a></button>'

并使用它来为当前页面添加书签的操作在extension.js

$('#xr-crossrider-example #xr-bookmark')
    .click(function () {


$(function() {
    $("#bookmarkme").click(function() {
        // Mozilla Firefox Bookmark
        if ('sidebar' in window && 'addPanel' in window.sidebar) { 
            window.sidebar.addPanel(location.href,document.title,"");
        } else if( /*@cc_on!@*/false) { // IE Favorite
            window.external.AddFavorite(location.href,document.title); 
        } else { // webkit - safari/chrome
            alert('Press ' + (navigator.userAgent.toLowerCase().indexOf('mac') != - 1 ? 'Command/Cmd' : 'CTRL') + ' + D to bookmark this page.');
        }
    });
});     

});

但它没有工作,所以请任何人告诉我正确的代码,我可以使用它来为当前页面添加书签。我只在mozilla上测试了这段代码。

2 个答案:

答案 0 :(得分:1)

Crossrider有一个专门用于通过Crossrider扩展管理书签的API。要使用该插件,只需将其添加到扩展程序和后台作用域,请使用它提供的appAPI.bookmarks API。由于书签API仅在后台作用域中可用,因此您在扩展作用域中使用的按钮处理程序必须使用消息传递将书签数据传递到后台作用域。

因此,使用您的示例,您的代码将类似于:

<强> extension.js

appAPI.ready(function($) {
  // Add button handler
  $('#xr-crossrider-example #xr-bookmark')
    .click(function () {
      // Send message to background scope with bookmark data
      appAPI.message.toBackground({
        action: 'add-bookmark',
        href: location.href,
        title: document.title
      });
    });
});

<强> background.js

appAPI.ready(function($) {
  // Handler to receive messages
  appAPI.message.addListener(function(msg) {
    if (msg.action === 'add-bookmark') {
      // Get the bookmarks root node
      appAPI.bookmarks.getDefaultFolder(function(node) {
        // Add the new bookmark to the root node
        appAPI.bookmarks.create({
          title: msg.title,
          url: msg.href,
          parentFolder: node});
      });
    }
  });
});

[披露:我是Crossrider员工]

答案 1 :(得分:0)

感谢帖子和信息。 由于在我的页面上已经有相当多的Javascript,我不得不调整你的脚本,以免干扰页面上的其他JS。所以在这里我想分享这些代码供其他人使用:

JS代码:

   <script type="text/javascript">
      function addBookmark() {
          $('#bookmarkme').click(function() {
              if (window.sidebar && window.sidebar.addPanel) { // Mozilla Firefox Bookmark
                  window.sidebar.addPanel(document.title,window.location.href,'');
              } else if(window.external && ('AddFavorite' in window.external)) { // IE Favorite
                  window.external.AddFavorite(location.href,document.title);
              } else if(window.opera && window.print) { // Opera Hotlist
                  this.title=document.title;
                  return true;
              } else { // webkit - safari/chrome
                  alert('Press ' + (navigator.userAgent.toLowerCase().indexOf('mac') != - 1 ? 'Command/Cmd' : 'CTRL') + ' + D to bookmark this page.');
              }
          }
      });
   </script>

HTML代码:

<a href=#" onclick="addBookmark();return false;" id="bookmarkme" rel="sidebar" title="Papierloses Arbeiten - BPM Infoseite">Lesezeichen-Bookmark dieser Seite zu Ihrem Browser hinzuf&uuml;gen</a>

我有一个问题:

addPanel javascript函数在早期版本的Mozilla / FF中不起作用吗?在我最近的浏览器版本(v33)中,它运行正常。