我在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添加到变量中。但没有任何作用。
答案 0 :(得分:1)
刚刚找到了答案,如果有人再遇到这个问题,就会发生这种情况。
chrome.tabs.query
是异步操作,因此稍后会调用回调函数。但document.getElementById('elm').textContent = tt;
行在调用回调之前执行,导致了问题。调试时没有发生这种情况,因为单步调试会延迟执行该行。