javascript - 在回调函数范围之外访问来自 chrome.tabs.query 的信息

标签 javascript google-chrome-extension

在以下代码片段中,警报告诉我“taburl”未定义。有没有办法在回调函数之外访问查询结果?

  var taburl;
  chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
    taburl = tabs[0].url;
  });
  alert(taburl);

最佳答案

您解决此问题的方式不正确,因为 chrome.tabs.query 是一种异步方法Read this excellent answer for an explanation of what that entails, as well as a possible solution

编辑:

根据项目的结构,最简单的解决方案是将需要选项卡信息的逻辑包装在一个函数中。然后您可以从 chrome.tabs.query 回调中调用该函数并将选项卡信息传入。例如:

var alertTab = function(tab) { alert(tab); }
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
  alertTab(tabs[0].url);
});

这是一种非常幼稚/危险的方法,只有当您将所有依赖于该(或其他)函数中的选项卡信息的同步代码包装起来时才会起作用。有许多更不易出错的更好方法……例如,查看 promise 模式。

关于javascript - 在回调函数范围之外访问来自 chrome.tabs.query 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24815614/

相关文章:

google-chrome - 如何从 Chrome 网上应用店下载给定 ID 的 CRX 文件?

css - 使元素不受CSS规则影响

javascript - 修改谷歌浏览器扩展程序以删除标签

javascript - Sails.js w/Handlebars(SPA 风格)中 Ember.js 产量的等价物

javascript - 如何创建一个正则表达式来验证带有 3 个点或破折号的 id

javascript - 如何在plotly.js中为图例赋予固定宽度

javascript - Chrome 扩展上下文菜单创建多个子项并且仅在弹出窗口打开时有效

javascript - 无法访问页面内容

javascript - jquery 和 CSS 中最快的选择器方法 - ID 与否?

javascript - 扩展对象导致 jQuery 错误