chrome.topSites在Microsoft EdgeChromium中返回未定义

问题描述

我正在尝试在chrome扩展程序中获得访问量最大的网站。我已经阅读过Chrome扩展程序开发人员文档。

当我尝试从topSites对象获取属性chrome时,它返回undefined。但根据文档,自Chrome 36起可用。

即使我在topSites添加了访问manifest.json的权限。

//Load top sites
function getTopSites() {
  chrome.topSites.get((top) => {
    console.log(top);
  });
}

getTopSites()

当我打印chrome对象时,找不到任何属性topSites。但是文档中提到topSites

//Load top sites
function getTopSites() {
  console.log(chrome);
};

getTopSites()

Microsoft Edge中的输出

Output chrome object

"permissions": [
        "activeTab","storage","topSites"
    ]

我试图在浏览器的控制台中对输出进行控制台。

谁能告诉我这是什么问题?

Docs

解决方法

我尝试在MS Edge Chromium浏览器85.0.564.51版中使用chrome.topSites进行测试

我发现它工作正常。

我建议您尝试将其显示在html文件而不是控制台中。

我对以下文件和代码进行了测试扩展。

popup.html

<!DOCTYPE HTML>
<html>
  <body>
    <h2>site list</h2>
    <div id='urls'></div>
    <script src='popup.js'></script>
  </body>
</html>

popup.js

function top_site(urls)
{   
    var url= document.getElementById('urls');
    for (var i = 0; i < urls.length; i++) 
    {
        url.innerHTML += urls[i].url + "<br>";      
    }
}

chrome.topSites.get(top_site);

manifest.json

{
  "name": "sitelist","version": "101","description": "display site list","permissions": ["topSites"],"browser_action": {
    "default_icon": "icon.png","default_popup": "popup.html"
  },"manifest_version": 2
}

在Edge浏览器中的输出:

enter image description here

扩展名的参考

Top sites sample Extensions