2013-07-20 2 views
2

Я делаю расширение chrome, которое открывает веб-сайт, если текущая вкладка не является тем же самым веб-сайтом, поэтому мне удалось получить все табуляции, подобные этому:Получение текущего URL-адреса из chrome extension

chrome.tabs.getAllInWindow(null, allTabs); 

и я написал функцию для его отображения:

function allTabs(tabs) { 
     var tabsURLS = ''; 
     for (var i = 0; i < tabs.length; i++) { 
      tabsURLS = tabs[i].url + '\n'; 
     } 
     alert(tabsURLS); 
    } 

, но мне нужно, чтобы получить текущий URL страницы, так что я получаю текущую вкладку этим:

var object=chrome.tabs.getCurrent(function(){;}); 

, но я не могу получить на странице свойств, как id или url и это предупреждение показывает «неопределенными» ...

alert(object); 

пока это предупреждение не работает на всех

alert(object.id); 

в конце концов, я прочитал эту страницу chrome.tabs и я был в шоке, когда я прочитал эту строку

getCurrent
chrome.tabs.g etCurrent (обратный вызов функции)
Получает вкладку, с которой выполняется этот вызов сценария. Может быть неопределенным, если вызывается из контекста без табуляции (например: фоновая страница или всплывающее представление).

так я не думаю, что есть решение о получении текущего открытого язычка из расширения хром ...

+0

возможно дубликат [Как получить открытый в данный момент URL вкладки в моей странице действий всплывающие окна?] (HTTP: // stackoverflow.com/questions/10413911/how-to-get-the-currently-opened-tabs-url-in-my-page-action-popup) –

ответ

6

Я считаю, что вам нужно использовать getSelected вместо

<html> 
<head> 
<script> 

    chrome.tabs.getSelected(null, function(tab) { 
     var tabId = tab.id; 
     var tabUrl = tab.url; 

     alert(tabUrl); 
    }); 

</script> 
</head> 
+1

Это сработало, огромное спасибо, я потратил около 2 часов на это. .. v_v – Tarek

+0

теперь есть еще одна проблема, url не будет обновляться с первого раза, страница открывается дважды, а когда изменяется URL-адрес, я должен дважды щелкнуть по расширению, чтобы открыть новую вкладку .... есть ли решение для этого ? – Tarek

2

в окончательный код был, как это, и он работал нормально ..:

var tabUrl; 
chrome.browserAction.onClicked.addListener(function(activeTab) { 
    var x=activeTab.url; 
    var newURL = "https://www.google.com"; 
    if (x!= newURL) { 
     //to open a page in a new tab 
     chrome.tabs.create({url: newURL,"selected":true}); 
     //to open the page with the current tab 
     chrome.tabs.update(activeTab.id, {url:newURL}); 
    } 

}); 
0

Обеспечить, чтобы установить правильные разрешения в manifest.json доступа Информация вкладка:

"permissions": [ 
    "tabs", 
    "http://*/*" 
], 

После этого, вы можете определить URL, используя

chrome.tabs.getSelected(null, function (tab) { 
    alert(tab.url); 
}); 
+2

'chrome.tabs.getSelected' устарел. – Xan

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