2012-07-21 2 views
1

У меня есть следующий код в popup.js расширения chrome.Расширение глобальной расширяемости глобальных переменных

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

Но странно то значение ТТ не определено при доступе из стороны функции, но она показывает «5», если document.getElementById('elm').textContent = tt; помещается внутри функции. Итак, почему переменное значение не сохраняется, когда управление выходит из функции?

Что я здесь делаю неправильно?

Этот код запускается, когда отображается всплывающее окно. То есть когда нажата кнопка действия браузера, и я упростил код для чтения. На самом деле я пытаюсь получить идентификатор текущей вкладки в переменной. Но ничего не работает.

+0

Возможный дубликат [Получить текущую вкладку и передать ее переменной в расширение Chrome] (http://stackoverflow.com/questions/10955408/get-current-tab-and-pass-it-to-variable-in -a-chrome-extension) (третий результат из [поиска Google для "сайта: stackoverflow.com chrome.tabs.query асинхронный"] (https://encrypted.google.com/search?q=site:stackoverflow.com + chrome.tabs.query + асинхронный), и один из двух результатов из [SO search for "\ [google-chrome-extension \] + chrome.tabs.query + асинхронный] (http://stackoverflow.com/search ? д =% 5Bgoogle-хром-расширение% 5D +% 2Bchrome.tabs.query +% 2Basynchronous)). –

ответ

1

Только что нашел ответ, если кто-то столкнулся с этим снова, это то, что произошло.

chrome.tabs.query - это асинхронная операция, поэтому функция обратного вызова была вызвана несколько позже. Но линия document.getElementById('elm').textContent = tt; была выполнена до вызова обратного вызова и вызвала проблему. Когда отладка этого не происходила, так как переход через код задерживает выполнение этой строки.

Смежные вопросы