私は、ユーザーのブックマークのコンテキストメニューを作成するJavaScriptスクリプトを作成しようとしています。私はChrome拡張ギャラリーで利用できるさまざまな拡張機能のコードを見てきましたが、それらはすべて非常に複雑で、ある程度までは欠陥があります(ほとんどの場合、特定の数のサブフォルダ内を見て停止します)。私はすべての可能な項目(非常に深いフォルダ階層内に埋まっていても)で動作する簡単なスクリプトを作成しようとしています。Google Chrome拡張機能でブックマークのリストを作成するJavaScriptスクリプトを作成する際の問題
次のスクリプトは動作しませんが、それは私が考える可能性のある解決策を示しています。私はすべての項目がそのId
価値を持っている場合(OBJECT_NUMBER)スクリプトで変数として設定することを信じてい
bookmarkObject = ITEM_FROM_ARRAY_OF_ALL_BOOKMARK_OBJECTS;
var OBJECT_NUMBER = chrome.contextMenus.create({
"contexts": ["all"],
"onclick": function() {
return function() {
if (bookmarkObject.url) {
chrome.tabs.create({
"url": bookmarkObject.url
});
}
else {
return null;
};
};
}(bookmarkObject),
"parentId": bookmarkObject.parentId,
"title": bookmarkObject.title,
"type": "normal"
});
を、スクリプトはその変数を任意の可能な子項目の値としてbookmark.parentId
の値として自動的に使用する必要があり、自動的に適切な方法でツリーをネストします。
しかし、すべてのブックマークオブジェクトの配列を取得する方法はありません(私はブックマークオブジェクトの配列を取得することしかできません特定のフォルダに)。さらに、取り出されたすべてのアイテムについて投稿したコードを動的に実行する方法を検討することはできません。OBJECT_NUMBERを関連オブジェクトのId
値に自動的に設定します。
誰でも助けてもらえますか?
EDIT:私はモハメド・マンスールのデモスクリプトごとに変化のかなりの数を作って、次のスクリプト作ってみた:限り
window.addEventListener("load", function() {
init();
}, false);
function init() {
chrome.bookmarks.getTree(function(children) {
addBookmarks(children);
});
};
function addBookmarks(bookmarks, parent) {
bookmarks.forEach(function(bookmarkObject) {
var bookmarkObject = chrome.contextMenus.create({
"contexts": ["all"],
"onclick": function() {
return function() {
if (bookmarkObject.url && bookmarkObject.url.length) {
chrome.tabs.create({
"url": bookmarkObject.url
});
};
};
}(bookmarkObject),
"parentId": parent,
"title": function() {
if (bookmarkObject.url && bookmarkObject.url.length) {
return bookmarkObject.title;
}
else {
return chrome.i18n.getMessage("contextmenu_label");
};
}(bookmarkObject),
"type": "normal"
});
if (bookmarkObject.children) {
addBookmarks(bookmarkObject.children, bookmarkObject);
};
});
};
を、それはそれとして、動作しているようですJavaScriptコンソールでエラーが返されません。しかし、ルート要素はコンテキストメニュー(その名前はコマンドchrome.i18n.getMessage("contextmenu_label")
によって取得されます)として表示されますが、子要素はネストされておらず、まったく表示されません。誰かが私が間違ったことを判断するのを助けることができますか?
ありがとうございます!私はあなたのものに基づいてスクリプトをまとめ、それを質問に戻しました。私は質問に述べたように、もう少し問題がある。 –
親のIDはどうやって取得していますか?私の例で親IDがどのように行われているか見てみましょう。 Stackoverflowでは、あなたの質問を別のものに更新することはそれほど重要ではありません。他の人がそれから学びたいなら、あまりにも混乱させます。より多くの質問が必要な場合は、そのために新しい質問を作成するのが最善です。 –