Chrome扩展程序全局变量怪异

时间:2012-07-21 15:00:42

标签: javascript google-chrome google-chrome-extension

我在chrome扩展名的popup.js中有以下代码。

var tt;
chrome.tabs.query({ active: true, currentWindow: true, windowType: 'normal' },
  function (tabs) {
      tt = 5;      
});
 document.getElementById('elm').textContent = tt;  

但奇怪的是,当访问函数的一侧时,tt的值是未定义的,但如果将document.getElementById('elm').textContent = tt;放入函数内部,则显示“5”。那么,当控件退出函数时,为什么不保留变量值?

我在这里做错了什么?

此代码在显示弹出窗口时运行。即当单击浏览器操作的按钮时,我简化了代码的可读性。实际上我正在尝试将当前标签的id添加到变量中。但没有任何作用。

1 个答案:

答案 0 :(得分:1)

刚刚找到了答案,如果有人再遇到这个问题,就会发生这种情况。

chrome.tabs.query是异步操作,因此稍后会调用回调函数。但document.getElementById('elm').textContent = tt;行在调用回调之前执行,导致了问题。调试时没有发生这种情况,因为单步调试会延迟执行该行。