【发布时间】: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