2012-06-13 3 views
5

Я хочу, чтобы получить текущий URL страницы с моей default_popup страницы, как это:Получить текущий URL страницы в расширении Chrome

chrome.tabs.query({active:true},function(tab){ 
    url = tab.url; 
}); 

И я зарегистрировал эту popup.html страницы в файле manifest.json. Тем не менее я получаю сообщение об ошибке:

Uncaught Type Error: Cannot call method 'query' of undefined

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

+0

Ошибка, которую вы получаете, означает, что функция 'query' не существует на объекте' chrome.tabs'. Имеет ли часть расширения, вызываемого этой функцией, привилегии для доступа к этой функции? И у вашего расширения есть привилегия * tabs *? – user2428118

+0

да, у меня расширение есть вкладка привилегии, и я использую выше chrome.tabs.query() метод внутри popup.html страницу, которая зарегистрирована как default_popup в browser_action: поле в файле manifest.json. –

ответ

1

Параметр обратного вызова должен указать функцию, которая выглядит следующим образом:

function(array of Tab result){...} 

Может быть, вы должны написать, как этот

url = tab[0].url; 
+1

спасибо ... вкладка [0] работает, но я хочу спросить в заданном запросе active: true, что содержит другой массив табуляции, означает, какое значение имеет вкладка [1], вкладка [2] ... будет? –

2

Собственно ошибка

Uncaught Type Error: Cannot call method 'query' of undefined 

потому, что я был run popup.html-страница отдельно (отдельно от расширения) означает, что я явно открыл popup.htm l в браузере, чтобы найти ошибку, но я забыл, что popup.html может использовать chrome api, если это страница расширения, и мое расширение не показывало URL-адрес, потому что я был usinf tab.url вместо tab [0] .url, поэтому Tom предложил правый аз.