あなたは、あなたのコードでは、ブックマークを作成するために書かれたように動作し、あなたのmanifest.jsonをファイルにpermissions
から"bookmaks"
を追加したと仮定します。 manifest.jsonファイルは質問に含まれていないため、問題があるかどうかは判断できません。
ブックマークフォルダを作成するには、どちらかがurl
プロパティを省略するか、下記bookmark.create()
に渡すオブジェクトにurl:null
を提供でテストし、完全な(FF48.0.2およびDeveloper Editionで、FF50.0a2) 、拡張子。これは、browser_action
ボタンがクリックされたときにブックマークを作成できるコードにラップされています。私は、単にインストール/ Firefoxの実行ではなく、browser_action
ボタンがクリックされたときにテストを実行するほうが簡単だと分かります。それはされます:
- というタイトルとリンクされたブックマークを作成します。
bookmarks.create() on MDN
- ブックマークフォルダを作成します
My Bookmark Folder A
- ブックマークフォルダを作成します
My Bookmark Folder B
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を見ていないことを意味します。
"指定されたparentIdの下にブックマークまたはフォルダを作成します.URLがNULLまたは不足している場合は、フォルダになります。 –
あなたの質問を* manifest.json *ファイルを含めて編集してください。 – Makyen