【问题标题】:Getting Chrome's current domain name in Typescript在 Typescript 中获取 Chrome 的当前域名
【发布时间】:2016-12-01 05:23:48
【问题描述】:

我正在尝试从 Angular2 Typescript Chrome 扩展中获取当前显示的 url。 我已经阅读了this 以获取 URL,并阅读了 this 关于如何在 Ts 中调用 Js 函数。 我还在 tsconfig.json 中将 allowJs 设置为 true。

这是我的代码:

  ngOnInit(){
    declare var tabs = chrome.tabs.query({params...},function(tabs) {
      return tabs[0];
    });
    console.log(tabs());
  }

除非我删除日志,否则这不会编译。

我也尝试不使用function expression call

declare chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
      function(tabs){}
    );

但它根本不起作用。 我想知道它是否可能与异步相关,因为代码在 OnInit 中。

有什么想法吗?

谢谢!

【问题讨论】:

  • 你为什么使用declare?我很确定这不是你想要的。声明一个变量意味着“有一个具有这个名称和类型的变量,但它是在其他地方定义的,所以亲爱的编译器不用担心”。但是在您的示例中,您正在那里分配值。
  • 嗯,其中一个链接建议在Ts中调用Js函数时这样做。
  • 没有真正的“从 ts 调用 js”之类的东西,因为 typescript 是 javascript。问题是编译器无法识别chrome.tabs.query,因为它没有为它定义,因此您可以声明它或使用为您定义它的定义文件。但是,当您将此类函数的结果分配给变量时,该变量不应该是declared,但它实际上应该存在。
  • 谢谢,成功了。
  • @Xan,问题已编辑。感谢您的通知。

标签: javascript google-chrome-extension typescript angular


【解决方案1】:

感谢 Nitzan 的评论解决了这个问题。这是代码:

declare private getUrl(){
    chrome.tabs.query({}, function(tabs) {
       console.log(tabs[0]);
    });
  }

ngOnInit(){
  this.getUrl();
}

【讨论】:

    猜你喜欢
    • 2014-11-29
    • 2017-02-22
    • 2022-12-25
    • 2019-11-13
    • 1970-01-01
    • 2012-05-29
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多