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

问题描述 投票:0回答:4

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

我的清单.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"
}
}

我的CloudTab.html页面的脚本标签包含

 chrome.topSites.get(function(info){
   for(var i=0;i<info.length;i++) {alert(info[i].url);}
  });

但我收到错误:

未捕获类型错误:无法调用未定义的“get”方法

我已经为此参考了 Google 的 API,但没有成功。 我运行的是 Chrome 版本 13.0.782。 有什么建议如何做吗?

google-chrome-extension browser-history
4个回答
2
投票

我尝试了这种方式,它在 chrome 37 中工作

popup.js

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);

popup.html

<!DOCTYPE html>
<html>
  <body>

    <h2>Most visited links</h2>
    <div id="mostVisited_div"></div>
    <script src="popup.js"></script>
  </body>
</html>

manifest.json

“chrome_url_overrides”:{ "newtab": "CloudTab.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"]
 }]

1
投票

要使用此 API,您的 Chrome 版本必须大于或等于 19。 请参阅 Google Chrome 扩展程序的“扩展程序新增功能”页面:http://code.google.com/chrome/extensions/whats_new.html#19


0
投票

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


0
投票

大多数 Chrome API 方法都是异步的。所以你需要做的是传入一个回调函数。

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

然后您可以使用回调函数调用它,如下所示:

getTopSites(function(url){alert(url);});

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

© www.soinside.com 2019 - 2024. All rights reserved.