2014-11-14 37 views
0

你好,我正在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(/*@[email protected]*/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上測試過這個代碼。

回答

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員工]

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)中,它工作正常。

相關問題