2011-09-05 13 views
19

पृष्ठभूमि टैब से वर्तमान टैब आईडी कैसे प्राप्त करें? वर्तमान टैब आईडी वह टैब है जिसे उपयोगकर्ता अपनी सामग्री देख सकता है।पृष्ठभूमि टैब से वर्तमान टैब आईडी कैसे प्राप्त करें

background.html

<html> 
<head> 
    <script> 

    if(typeof localStorage.state == 'undefined') 
     localStorage.state = 'off' 
    chrome.browserAction.onClicked.addListener(function(tab) { 
     if(localStorage.state == 'on') 
     { 
      localStorage.state = 'off'; 
     } 
     else 
     { 
      localStorage.state = 'on'; 
     } 
     chrome.browserAction.setBadgeText({text: localStorage.state, tabId: tab.id}); 
     chrome.tabs.sendRequest(tab.id, {state: localStorage.state}); 
     //chrome.tabs.sendRequest(tab.id, {state: localStorage.state}); 
    }); 
    </script> 
</head> 

उत्तर

2

कई एपीआई तरीकों null एक मौजूदा टैब के रूप में व्याख्या। chrome.tabs.sendRequest उनमें से एक है।

अन्यथा

:

chrome.tabs.getSelected(null, function(tab) { ... }) 
37

getSelecteddeprecated किया गया है। यह करने के लिए नया तरीका है:

chrome.tabs.query(
    {currentWindow: true, active : true}, 
    function(tabArray){...} 
) 

आप सक्रिय टैब पर कुछ कॉलबैक प्रदर्शन करने के लिए चाहते हैं, आप के रूप में इतना ऊपर लपेट कर सकते हैं:

function doInCurrentTab(tabCallback) { 
    chrome.tabs.query(
     { currentWindow: true, active: true }, 
     function (tabArray) { tabCallback(tabArray[0]); } 
    ); 
} 

उदाहरण के लिए

var activeTabId; 
doInCurrentTab(function(tab){ activeTabId = tab.id }); 
+0

@neaumusic मैं अपने संपादित साथ एक समस्या है। यह लेखक के कोड में थोड़ा अधिक बदलता है और इसमें झूठी जानकारी होती है ('tabArray [0]' आईडी नहीं है)। मैं इसे वापस रोल कर रहा हूँ। – Xan

+0

@neaumusic ने कहा, आप निश्चित रूप से एक उत्तर के रूप में अपना कोड पोस्ट कर सकते हैं। – Xan

+0

यह पूरी तरह से काम नहीं कर रहा है। अगर मैं 'console.log (activeTabId) करता हूं;' कॉलबैक के भीतर से (जैसे 'फ़ंक्शन (टैब) {...} ') मैं देख सकता हूं कि tab.id सेट है, लेकिन जैसे हीInCurrentTab देता है, सक्रिय TabId अपरिभाषित बनी हुई है। क्या Google ने कुछ तोड़ दिया जो इसे तोड़ दिया? –

4

इसे अपने पृष्ठभूमि पृष्ठ में चलाएं

chrome.tabs.query({active:true,windowType:"normal", currentWindow: true},function(d){console.debug(d);}) 

या और भी बेहतर

chrome.tabs.query({active:true,windowType:"normal", currentWindow: true},function(d){console.debug(d[0].id);}) 
+2

यह सभी विंडोज़ में सभी सक्रिय टैब प्राप्त करेगा। तो यदि आपके पास एक से अधिक खिड़की खुली हैं तो आपको कई टैब वापस मिलेंगे। – Soviut

+0

दर्शकों के लिए - इसे सोवियत के मुद्दे को हल करने के लिए 'वर्तमानविंडो' के साथ संपादित किया गया था। –

0

chrome.tabs.query

my chrome extension using chrome.tabs.query


function onNextTabDetermined (callback) { 
    chrome.tabs.query({ 
     currentWindow: true, 
     active: true 
    }, function (currentTabs) { 
     var nextTabIndex = (currentTabs[0].index + (forward ? 1 : -1)); 
     if (nextTabIndex === -1) { 
      chrome.tabs.query({ 
       "currentWindow": true 
      }, function (allTabs) { 
       callback(allTabs[allTabs.length - 1]); 
      }); 
     } else { 
      chrome.tabs.query({ 
       "index": nextTabIndex, 
       "currentWindow": true 
      }, function (nextTabs) { 
       if (nextTabs[0]) { 
        callback(nextTabs[0]); 
       } else { 
        chrome.tabs.query({"index": 0}, function (nextTabs) { 
         callback(nextTabs[0]); 
        }); 
       } 
      }); 
     } 
    }); 
}; 
+1

यह कोड क्या करता है इसका स्पष्टीकरण थोड़ा सा है, और यह उत्तर दूसरों की तुलना में बेहतर क्यों है, आपका स्वागत होगा। – Xan

संबंधित मुद्दे