2012-02-24 4 views
1

내 확장 프로그램에 포함 된 탭의 탭 ID를 가져 오는 방법이 있습니까?Chrome 확장 탭 새로 고침

+2

당신이 "내 확장의 일부를"무엇을 의미합니까? 확장 기능을 만들 때 생성되는 탭을 추적 할 수 있습니다. –

답변

2

이것은 "내 확장 부분"의 의미에 달려 있습니다.

확장 프로그램에 포함 된 페이지를 표시하는 탭을 의미하는 경우 다음을 수행 할 수 있습니다.

chrome.tabs.query({}, function (tabs) { 
    var myTabs = []; 
    for (var i = 0; i < tabs.length; i++) { 
    if (tabs[i].url.indexOf(chrome.extension.getURL('')) === 0) { 
     myTabs.push(tabs[i].id); 
    } 
    } 
    console.log(myTabs); 
}); 

대신 DOM의 DOM에 액세스하려면 더 쉽게 얻을 수 있습니다.

var myTabs = chrome.extension.getViews({type: 'tab'}); 
단순히 각 뷰 ( DOMWindow)의 반복 할 수있는 DOM에 접근 할 수있는

각 페이지를 새로 고침;

Uncaught TypeError: Cannot call method 'reload' of undefined 

하지만이 코드 :

chrome.tabs.executeScript(myTabs[i].id, {code:"document.location.reload(true);"}); 

작품

for (var i = 0; i < myTabs.length; i++) { 
    myTabs[i].location.reload() 
} 
+0

'getViews' 메서드를 사용하면'tabs' 권한을 포함시키지 않아도됩니다. –

3
myTabs[i].location.reload() 

오류가 있습니다. 그러나 더 나은 correct method를 사용 : 나는 같은 일을하고 chrome.tabs.query 및 나를 위해 작동하지 않았다 chrome.tabs.get를 사용하여 작업을 수행하려고했습니다

chrome.tabs.reload(myTabs[i].id) 
+1

당신의 대답에, 당신은 받아 들여진 대답에서'myTabs'를 언급하고 있습니다. 응답자 (혼동스럽게)는 다른 콜렉션에 대해 동일한 이름 ('myTabs')을 사용합니다. 'chrome.tabs.query'의'myTabs'는 [Tab type] (http://developer.chrome.com/extensions/tabs.html#type-Tab)을 리턴합니다.이 탭은'window '개체. 이 경우 귀하의 대답은 정확합니다. 다른 대답의 맨 아래에있는 'myTabs'는'chrome.extension.getViews'에서 반환 된'window' 객체의 배열입니다. 마지막 코드 스 니펫은 마지막 'myTabs' 객체에만 적용됩니다. –

0

. 이것은 완벽하게 작동 :

var data = chrome.extension.getViews({'type':'tab'}); 
$.each(data, function(k,v) { 
    v.window.location.reload(); 
}); 
관련 문제