2016-08-28 17 views
0

私はbookmarks.create()のMDN Javascript APIの例を見ています。私は、フォルダを作る方法を学ばなければならない例を実装しようとしています:javascriptでブックマークフォルダを作成するには?

function onBookmarkAdded(bookmarkItem) { 
    console.log("Bookmark added with ID: " + bookmarkItem.id); 
} 

chrome.bookmarks.create({ 
    title: "bookmarks.create() on MDN", 
    url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create" 
}, onBookmarkAdded); 

これは私が知る限り何もしません。ブックマークのためのフォルダを作る方法の助けや他の例は非常に高く評価されるでしょう。

+0

"指定されたparentIdの下にブックマークまたはフォルダを作成します.URLがNULLまたは不足している場合は、フォルダになります。 –

+0

あなたの質問を* manifest.json *ファイルを含めて編集してください。 – Makyen

答えて

0

あなたは、あなたのコードでは、ブックマークを作成するために書かれたように動作し、あなたのmanifest.jsonをファイルにpermissionsから"bookmaks"を追加したと仮定します。 manifest.jsonファイルは質問に含まれていないため、問題があるかどうかは判断できません。

ブックマークフォルダを作成するには、どちらかがurlプロパティを省略するか、下記bookmark.create()

に渡すオブジェクトにurl:nullを提供でテストし、完全な(FF48.0.2およびDeveloper Editionで、FF50.0a2) 、拡張子。これは、browser_actionボタンがクリックされたときにブックマークを作成できるコードにラップされています。私は、単にインストール/ Firefoxの実行ではなく、browser_actionボタンがクリックされたときにテストを実行するほうが簡単だと分かります。それはされます:

  1. というタイトルとリンクされたブックマークを作成します。bookmarks.create() on MDN
  2. ブックマークフォルダを作成しますMy Bookmark Folder A
  3. ブックマークフォルダを作成しますMy Bookmark Folder B
  4. My Bookmark Folder B

内のブックマークフォルダMy Bookmark Folder B.1を作成するすべての「その他のブックマーク」の下に作成されるのは、parentIdがcalこの拡張機能によって作成されたブックマークフォルダの子ではないものは、bookmark.create()です。

background.js

//* For testing, open the Browser Console 
try{ 
    //alert() is not supported in Firefox. This forces the Browser Console open. 
    // This abuse of a misfeature works in FF49.0b+, not in FF48 
    alert('Open the Browser Console.'); 
}catch(e){ 
    //alert() throws an error in Firefox versions below 49 
    console.log('Alert() threw an error. Probably Firefox version below 49.'); 
} 
//* 

chrome.browserAction.onClicked.addListener(function(tab) { 
    doBrowserAction(); 
}); 

function doBrowserAction(){ 
    console.log('Background: Doing action'); 
    createABookmark(); 
    createABookmarkFolder(); 
    createABookmarkFolderWithinABookmarkFolder(); 
} 

function onBookmarkAdded(bookmarkItem) { 
    console.log("Bookmark added with ID: " + bookmarkItem.id, bookmarkItem); 
} 

function createABookmark(){ 
    chrome.bookmarks.create({ 
     title: "bookmarks.create() on MDN", 
     url: "https://developer.mozilla.org/Add-ons/WebExtensions/API/bookmarks/create" 
    }, onBookmarkAdded); 
} 

function createABookmarkFolder(){ 
    chrome.bookmarks.create({ 
     title: "My Bookmark Folder A", 
     url: null 
    }, onBookmarkAdded); 
} 

function createABookmarkFolderWithinABookmarkFolder(){ 
    chrome.bookmarks.create({ 
     title: "My Bookmark Folder B", 
     url: null 
    }, bookmarkItem => { 
     onBookmarkAdded(bookmarkItem); 
     chrome.bookmarks.create({ 
      title: "My Bookmark Folder B.1", 
      url: null, 
      parentId: bookmarkItem.id 
     },onBookmarkAdded 
     ); 
    }); 
} 

はmanifest.jsonを:明らかに

{ 
    "description": "Create a bookmark on browser_action button click", 
    "manifest_version": 2, 
    "name": "Demo: Create Bookmark", 
    "version": "0.1", 

    "applications": { 
     "gecko": { 
      //Firefox: must define id to use some features (e.g. option_ui) 
      "id": "[email protected]", 
      "strict_min_version": "48.0" 
     } 
    }, 

    "permissions": [ 
     "bookmarks" 
    ], 

    "background": { 
     "scripts": [ 
      "background.js" 
     ] 
    }, 

    "browser_action": { 
     "default_icon": { 
      "32": "myIcon.png" 
     }, 
     "default_title": "Do Action", 
     "browser_style": true 
    } 
} 

、デモ以上にわたって様々な機能を使用する場合は、あなたがお勧めしますより一般的な目的(コールバック、ブックマークのプロパティなどを渡すこと)を行います。

注:"General notes on testing and development of WebExtensions in Firefox" of this answerというタイトルのセクションを参照してください。あなたの声明「これは私が言うことができる限りは何もしません」は、エラーメッセージやコンソールログについてはBrowser Consoleを見ていないことを意味します。

関連する問題