1

我在 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 放入变量中。但没有任何效果。

4

1 回答 1

1

刚刚找到答案,如果有人再次遇到这种情况,就是这样。

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

于 2012-07-21T15:06:35.937 回答