如何同步chrome书签与服务器在扩展使用API
How to sync chrome bookmarks with server in extension using API
我正在创建一个Chrome扩展,允许您查看,更新,创建和删除您的Chrome书签。我还希望能够通过我们的服务器加载和保存用户的书签,而不是通过谷歌帐户同步。我遇到的问题是,我不确定如何在不同设备间同步这些书签。由于Chrome书签API没有任何方法来加载/同步树,我想我会将每个书签/文件夹保存在服务器上的数组中,如
[{id: "", parentId: "", index: "", title: "", url: ""}, ...]
当用户在新设备/浏览器上登录他们的帐户时,我从服务器获取书签/文件夹数组并遍历它们。在循环中,我将使用带有ID的Chrome.bookmarks.get来检查该书签是否已经存在,如果不存在,则使用create函数来创建该书签。问题是,我无法在文档中看到指定新创建的书签/文件夹的ID。如果在新设备/浏览器上创建的书签/文件夹具有与原始设备/浏览器不同的ID,该怎么办?然后使用get函数(它需要您指定您正在查找的ID)将不允许我正确地比较书签。这个问题还有别的解决办法吗?
我实际上最终使用Chrome书签搜索功能,通过url和标题搜索书签,然后匹配,看看是否父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);
}
}
相关文章:
- 从安卓设备将图像上传到服务器时,文件扩展名错误
- 来自chrome扩展的服务器端Facebook身份验证
- Chrome扩展:通过服务器上的JavaScript将请求发送到后台页面
- 为什么$elemMatch MongoDB查询在具有扩展RexExp EJSON类型的客户端和服务器上的行为不同
- 如何扩展 EJSON 以序列化 Meteor 客户端-服务器交互的 RegEx
- Chrome 的网上商店服务器拒绝扩展程序,并显示“错误:清单必须定义版本
- Chrome扩展程序每隔一段时间检查来自服务器的数据
- 将文件从本地存储上传到具有 Chrome 扩展名的服务器
- $.extend() = 与服务器循环一起使用时不扩展
- 从服务器接收并以chrome扩展实现.js文件
- Mediawiki:服务器端处理的带有解析器扩展的DataTables
- 从Chrome扩展background.js向服务器发送URL
- 请求服务器如何扩展以满足更大的流量需求
- Oauth基于web服务器的chrome扩展,如书签扩展
- 使用chrome扩展上传图像到服务器
- 如何扩展NodeJS,同时通过Apache web服务器代理它
- 如何同步chrome书签与服务器在扩展使用API
- Chrome扩展:获得当前控制台发送到服务器
- Chrome将允许我的扩展发送HTTPS请求到自签名的服务器证书
- 通过rails服务器从chrome扩展解耦Github Oauth2