javascript - 如何在 Angular 中使用 Chrome Extension Api?

标签 javascript angular typescript google-chrome-extension

我正在开发一个 chrome 扩展程序,我有一个“background.js”,它可以过滤 url 并从我的 api 获取数据。当条件满足时,我从“background.js”发送消息。我想从 Angular 组件 中捕获它。

background.js

...
chrome.pageAction.show(tab.id, () => {
            chrome.runtime.sendMessage({data: dataFromAPI})
        });
...

我运行了 npm install --save @types/chrome

app.component.ts

import {Component} from '@angular/core';
import {chrome} from '@types/chrome';
@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  constructor() {
    chrome.runtime.onMessage.addListener( data => console.log(data));
  }

}

但是 WebStorm 说,“.../node_modules/@types/chrome/index.d.ts' 不是模块。

如何从 Angular 组件使用 Chrome Api?

最佳答案

/// <reference types="chrome"/>
import {chrome} from '@types/chrome';
// Remove chrome import

重要提示:必须在引用前添加三个斜杠。

如果仍然不起作用,则在 tsconfig.json 类型中添加“Chrome”。

compilerOptions: ["types": [ "Chrome" ] ]

关于javascript - 如何在 Angular 中使用 Chrome Extension Api?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53169721/

相关文章:

javascript - 通过Ajax运行php脚本

Angular Mat-Table 完成渲染事件/Mat Paginator Loading Spinner

html - 如何在 Angular2 中实现 Google Analytics?

typescript - 在 sequelize db 操作后返回 bluebird promise

Javascript 'normal' 对象与模块模式

javascript - 如何检查是否包含任何字符串顺序的所有关键字?正则表达式 Javascript

angularjs - 使用 karma 在 angular2 中运行测试时失败 : No provider for Reflector! 错误

javascript - Office 脚本根据某些单元格中的多个数据删除整行

javascript - typescript -我在使用函数的返回值时遇到问题

javascript - 以编程方式在 JavaScript 中获取和设置 jssor 的索引