[英]How to sync chrome bookmarks with server in extension using API
我正在创建一个Chrome扩展程序,该扩展程序可让您查看,更新,创建和删除Chrome书签。 我还希望能够通过我们的服务器加载和保存用户的书签,而不是通过Google帐户进行同步。 我遇到的问题是我不确定如何在设备之间同步这些书签。 由于Chrome书签API没有任何加载/同步树的方法,因此我想将每个书签/文件夹保存在服务器上的数组中,例如
[{id: "", parentId: "", index: "", title: "", url: ""}, ...]
当用户在新设备/浏览器上登录其帐户时,我从服务器获取书签/文件夹阵列并循环浏览它们。 在循环中,我将使用带有ID的Chrome.bookmarks.get来检查该书签是否已经存在,如果不存在,请使用create函数创建该书签。 问题是,我无法在文档中看到指定新创建的书签/文件夹的ID的方法。 如果在新设备/浏览器上创建的书签/文件夹具有与原始设备/浏览器不同的ID,该怎么办? 然后使用get函数(要求您指定要查找的ID)将不允许我正确比较书签。 这个问题还有其他解决方案吗?
我实际上最终使用Chrome书签搜索功能通过url和title搜索书签,然后进行匹配以查看父ID是否匹配。 有点奇怪的方法,但是可以用!
function initBookmarks(){
//hit endpoint to get array of current bookmarks
var curBookmarks = [
{
id : "7",
parentId : "1",
index : 12,
title : "A programmatically generated bookmark",
url : "http://google.com"
},
{
id : "8",
parentId : "1",
index : 13,
title : "A programmatically generated bookmark 2",
url : "http://google.com"
}
];
if(curBookmarks.length > 0){
curBookmarks.forEach(function(bookmark,index){
console.log("searching.. ", {url : bookmark.url, title : bookmark.title});
chrome.bookmarks.search({url : bookmark.url, title : bookmark.title}, function(result){
console.log('result for search for is', result, bookmark.title);
var flagExists = false;
for(var i = 0; i < result.length; i++){
if(result[i].parentId === bookmark.parentId) flagExists = true;
}
if(!flagExists){
chrome.bookmarks.create({
parentId: bookmark.parentId,
index: bookmark.index,
title: bookmark.title,
url: bookmark.url
}, function(){
console.log('IVE CREATED!!!');
if(index === curBookmarks.length-1)
chrome.bookmarks.getTree(parseBookmarks);
});
}
else{
if(index === curBookmarks.length-1)
chrome.bookmarks.getTree(parseBookmarks);
}
})
})
}
else{
chrome.bookmarks.getTree(parseBookmarks);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.