Javascript 角形2/4的镀铬延伸件

Javascript 角形2/4的镀铬延伸件,javascript,angular,google-chrome,google-chrome-extension,Javascript,Angular,Google Chrome,Google Chrome Extension,我正在尝试使用Angular 4为google chrome浏览器创建一个chrome扩展。我只需要页面的url和标题,在这里我单击浏览器图标(单击事件)。到目前为止,我做了以下几件事 我已经创建了一个eventPage,当我单击extension图标时,该页面将被调用。代码=> if (typeof chrome.browserAction !== 'undefined') { chrome.browserAction.onClicked.addListener(function(ta

我正在尝试使用Angular 4为google chrome浏览器创建一个chrome扩展。我只需要页面的url和标题,在这里我单击浏览器图标(单击事件)。到目前为止,我做了以下几件事

我已经创建了一个eventPage,当我单击extension图标时,该页面将被调用。代码=>

if (typeof chrome.browserAction !== 'undefined') {
    chrome.browserAction.onClicked.addListener(function(tab) {
        listService.getBookmarks().then(bookmarkLists => {
            bookmarkLists = bookmarkLists;
            getSelectedTab(bookmarkLists);
        });
    });
} else {
    console.log('EventPage initialized');
}

function getSelectedTab(bookmarkLists) {
    chrome.tabs.getSelected(null, function(tab) {
        let newBookmark: Object = {
            name: tab.title,
            url: tab.url
        };
        bookmarkLists.push(newBookmark);
        listService.setBookmarks(bookmarkLists);
    });
}
listService.getBookmarks
=>listService有一个方法getBookmarks,它已经有一些数据作为键、值对

如果有人能告诉我如何获取我正在触发的页面的URL和标题,点击扩展点击

建议的编辑 Manifest.json

{
  "manifest_version": 2,

  "name": "Extension",
  "description": "This extension ...",
  "version": "1.0",
  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",

  "browser_action": {
    "default_popup": "index.html"
  },
  "permissions": [
    "storage",
    "tabs",
    "activeTab",
    "http://*/*",
    "https://*/*"
  ],

  "background": {
    "page": "index.html",
    "persistent": false
  },

  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
}

这就是我在扩展名中获取url和标题的方式

var that = this;
chrome.tabs.query({
    currentWindow: true,
    active: true
}, function(tabs) {
  console.log(tabs[0]);
  if (tabs.length > 0) {
    if (tabs[0].url !== undefined && tabs[0].url !== null && tabs[0].url !== '') {
      that.tabId = tabs[0].id;
      that.tabURL = tabs[0].url;
      that.tabTitle = tabs[0].title;
      that.favIconUrl = tabs[0].favIconUrl;
    }
  }
});
将此文件包含在组件顶部

///<reference path="../../../node_modules/@types/chrome/index.d.ts" />
///

您的
onClicked
处理程序中已经有了对象,该处理程序将包含。我必须仔细检查,但我还认为它可以通过
activeTab
权限使用。@Makyen我已经授予了“activeTab”和“tabs”权限,但仍然没有获得url和标题。请将问题放在主题上:包括重复问题的问题。对于Chrome扩展或Firefox WebExtensions,这几乎总是意味着包括manifest.json和一些背景、内容和/或弹出脚本/HTML。寻求调试帮助的问题(“为什么这段代码没有按我想要的方式工作?”)必须包括:(1)所需的行为,(2)特定的问题或错误,(3)在问题本身中重现它所需的最短代码。另请参见:、和。更具体地说,请提供manifest.json,并从
选项卡中显示您试图使用
url
标题的位置。选项卡从
onClicked
事件中获取。顺便说一句:已弃用,不应用于新开发。您应该改用[
tabs.query()
]()。我真的不知道你为什么要在这段代码中使用
tabs.getSelected()
,因为你已经在
browserAction.onclick
handler.Thank@Makyen我已经删除了
tabs.getSelected()
,现在使用
chrome.tabs.query
,这样我至少可以得到url和标题。如果您愿意,可以将您的评论转换为答案。