Api 获取chrome.topSites和最近关闭的选项卡

Api 获取chrome.topSites和最近关闭的选项卡,api,google-chrome-extension,browser-history,Api,Google Chrome Extension,Browser History,我正在开发chrome扩展,它将取代新的tab用户界面 我能够检索已安装的应用程序信息。 但是,我无法检索访问次数最多和最近关闭的选项卡信息 我的manifest.json { "name": "Cloud Tab", "version": "1.0", "description": "New Tab with cloud UI.", "background_page": "background.html", "permissions": [ "tabs","management","topS

我正在开发chrome扩展,它将取代新的tab用户界面 我能够检索已安装的应用程序信息。 但是,我无法检索访问次数最多和最近关闭的选项卡信息

我的manifest.json

{
 "name": "Cloud Tab",
"version": "1.0",
"description": "New Tab with cloud UI.",
"background_page": "background.html",
"permissions": [ "tabs","management","topSites",
    "chrome://favicon/"],

"chrome_url_overrides": {
"newtab": "CloudTab.html"
}
}
My CloudTab.html页面的脚本标记包含

 chrome.topSites.get(function(info){
   for(var i=0;i<info.length;i++) {alert(info[i].url);}
  });
chrome.topSites.get(函数(信息){
for(var i=0;iUncaught TypeError:无法调用未定义的
我已经参考了谷歌的api,但没有运气
我正在运行chrome的13.0.782版

有什么建议吗?

您可以在后台页面中使用事件侦听器跟踪已关闭的选项卡,并请求其中的一些信息。

大多数Chrome API方法都是异步的。因此,您需要做的是传入回调函数

getTopSites: function(callbackfunc) {
    chrome.topSites.get (function(url_list) {
        for(var i=0;i<url_list.length;i++) {callbackfunc(url_list[i]);}
    });
}

请原谅我在上面犯的任何语法错误。

要使用此API,您的Chrome版本必须大于或等于19。
请参阅Google Chrome extensions的扩展页面中的新功能:

我尝试了这种方法,它在Chrome 37中运行

popup.js anchorclick(事件)上的函数{ create({url:event.srcmelement.href}); 返回false; } 函数buildPopupDom(MOSTvisitedURL){ var popupDiv=document.getElementById('mostVisited_div'); var ol=popupDiv.appendChild(document.createElement('ol')); 对于(var i=0;i
popup.html

访问量最大的链接
manifest.json “chrome\u url\u覆盖”:{ “newtab”:“CloudTab.html” }

“权限”:[
“标签”,
“表土”,
“http://*/*”,
“https://*/*”
],            
“浏览器操作”:{
“默认图标”:“图标32.png”,
“默认弹出窗口”:“popup.html”
},
“内容脚本”:[{
“匹配项”:[“”],
“js”:[“popup.js”]
}]

选项卡。onRemoved
不可靠,或者至少它的使用不充分,因为它被调用,即使是一些不可见的选项卡,也无法与普通选项卡区分开来。此外,为了正确跟踪最近关闭的选项卡,您需要处理
选项卡。onUpdated
,这也不可靠:(AFAIK
alert
将不起作用,请改用
console.log
getTopSites(function(url){alert(url);});
function onAnchorClick(event) {
  chrome.tabs.create({ url: event.srcElement.href });
  return false;
}

function buildPopupDom(mostVisitedURLs) {
  var popupDiv = document.getElementById('mostVisited_div');
  var ol = popupDiv.appendChild(document.createElement('ol'));

  for (var i = 0; i < mostVisitedURLs.length; i++) {
    var li = ol.appendChild(document.createElement('li'));
    var a = li.appendChild(document.createElement('a'));
    a.href = mostVisitedURLs[i].url;
    a.appendChild(document.createTextNode(mostVisitedURLs[i].title));
    a.addEventListener('click', onAnchorClick);
  }
}
chrome.topSites.get(buildPopupDom);
<!DOCTYPE html>
<html>
  <body>

    <h2>Most visited links</h2>
    <div id="mostVisited_div"></div>
    <script src="popup.js"></script>
  </body>
</html>
"permissions": [
        "tabs",
        "topSites",
        "http://*/*",
        "https://*/*"
  ],            
"browser_action": {
        "default_icon": "icon_32.png",
        "default_popup": "popup.html"
  },
 "content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["popup.js"]
 }]