Chrome 扩展程序:查询标签页异步
Chrome Extension: query tabs async
我有两个变量设置为函数的"返回值",这些函数是获取选项卡的URL,以及对实际选项卡对象的引用,并将它们存储在变量中。我有一些代码:
function init(){
var url = getUrl();
var tab = getTab();
}
function getUrl(){
var tablink;
chrome.tabs.query({currentWindow: true, active: true},function(tabs){
tablink = tabs[0].url;
return tablink;
});
}
function getTab(){
var tab;
chrome.tabs.query({currentWindow: true, active: true},function(tabs){
tab = tabs[0];
});
return tab;
}
为什么 URL 是未定义的,尽管我从回调函数中返回 URL,但当我从回调外部返回选项卡时,它返回正常,就好像这是一个同步调用一样。我在调试器中有这种现象的屏幕截图。我正在尽力学习如何在 chrome 中处理异步方法,但这非常令人困惑。有人可以向我解释这种行为吗?
正如你已经说过的,chrome.tabs.query
函数是异步的。因此,您不能依赖 return
,而是必须使用回调。Chrome扩展程序的文档很好地解释了它:http://developer.chrome.com/extensions/overview.html#sync-example
所以在你的情况下,这样的东西可能会起作用(取决于你以后想用什么)。
var url, tab;
function init(){
chrome.tabs.query({currentWindow: true, active: true},function(tabs){
url = tabs[0].url;
tab = tabs[0];
//Now that we have the data we can proceed and do something with it
processTab();
});
}
function processTab(){
// Use url & tab as you like
console.log(url);
console.log(tab);
}
相关文章:
- 在<页眉>标签
- Ckeditor-plugin:插入虚假元素add不情愿<p>标签前后
- esri javascript异步打印
- JavaScript异步问题
- iframe正在添加标签,需要删除它们
- $translateProvider.useStaticFilesLoader的Angular Translate异步定
- 异步facebook功能
- 异步并行错误
- 在Redux中,我应该在哪里编写复杂的异步流
- 如何自动调整标签的高度以适应内容
- Jquery标签插件粘贴问题
- Twitter引导程序Typeahead-Id&标签
- 角度异步http自动完成
- 如何从SeleniumWebdriver获取异步Javascript响应
- Chrome 扩展程序:查询标签页异步
- 为什么第二个执行带有异步标签的较小尺寸的脚本
- 异步更新标签时出现问题
- OpenX 异步标签
- 使用Java,如何验证/验证Google Analytics异步跟踪代码(分析片段)位于网页源的标签部分下
- 如何异步加载第三方javascript标签,其中有document.write