जवाबों:
chrome.tabs.query()इस तरह का उपयोग करें:
chrome.tabs.query({active: true, lastFocusedWindow: true}, tabs => {
let url = tabs[0].url;
// use `url` here inside the callback because it's asynchronous!
});
इसके लिए आवश्यक है कि आप chrome.tabsअपने एक्सटेंशन मेनीफ़ॉर्म में एपीआई तक पहुंच का अनुरोध करें :
"permissions": [ ...
"tabs"
]
यह ध्यान रखना महत्वपूर्ण है कि आपके "वर्तमान टैब" की परिभाषा आपके एक्सटेंशन की आवश्यकताओं के आधार पर भिन्न हो सकती है।
lastFocusedWindow: trueजब आप उपयोगकर्ता की फ़ोकस विंडो (आमतौर पर सबसे ऊपरी विंडो) में वर्तमान टैब का उपयोग करना चाहते हैं, तो क्वेरी में सेट करना उचित है।
सेटिंग currentWindow: trueआपको विंडो में वर्तमान टैब प्राप्त करने की अनुमति देती है जहां आपके एक्सटेंशन का कोड वर्तमान में निष्पादित हो रहा है। उदाहरण के लिए, यह तब उपयोगी हो सकता है यदि आपका एक्सटेंशन एक नई विंडो / पॉपअप (फ़ोकसिंग फ़ोकस) बनाता है, लेकिन फिर भी उस विंडो से टैब जानकारी एक्सेस करना चाहता है जहाँ एक्सटेंशन चलाया गया था।
मैंने lastFocusedWindow: trueइस उदाहरण में उपयोग करने के लिए चुना , क्योंकि Google उन मामलों को कॉल करता है जिनमें currentWindow हमेशा मौजूद नहीं हो सकते हैं ।
आप यहां परिभाषित किसी भी गुण का उपयोग करके अपनी टैब क्वेरी को और परिष्कृत करने के लिए स्वतंत्र हैं: chrome.tabs.query
चेतावनी! chrome.tabs.getSelectedहै पदावनत । कृपया chrome.tabs.queryअन्य उत्तरों में दिखाए अनुसार उपयोग करें ।
सबसे पहले, आपको API के लिए अनुमतियों को मेनिफ़ेस्ट में सेट करना होगा। json:
"permissions": [
"tabs"
]
और URL स्टोर करने के लिए:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
chrome.tabs.getSelectedअपरिभाषित है, क्या मैं इसे एक अलग प्रश्न में पूछता हूं?
chrome.tabs.getSelectedविधि पदावनत किया गया है, सही विधि पर सूचीबद्ध है इस सवाल का जवाब नीचे इस ।
अन्य उत्तर मान लेते हैं कि आप इसे पॉपअप या बैकग्राउंड स्क्रिप्ट से जानना चाहते हैं।
यदि आप सामग्री स्क्रिप्ट से वर्तमान URL जानना चाहते हैं , तो मानक JS तरीका लागू होता है:
window.location.toString()
आप window.locationहोस्ट, प्रोटोकॉल या पथ जैसे URL के अलग-अलग हिस्सों तक पहुंचने के लिए गुणों का उपयोग कर सकते हैं ।
window.location.hostकि क्या Im "stackoverflow.com" पर है या नहीं।
match:"<all_urls>"content_script सेक्शन पर स्थिति की आवश्यकता होती है और Chrome को reccomend <all_urls> नहीं किया जाता है।
contentScript.jsन चलाएं background.js। संदेश में URL से फ़िल्टर किया गया कोई भी डेटा पास करें background.js। उदाहरण: let message = { type: "fetchVideoDate", id: getVideoId() };जहां getVideoId()निष्पादन होता है window.location.toString()। अन्यथा आपको कुछ chrome://temp_background_file.htmlडेटा मिलेगा । यह भी ध्यान दें कि कभी-कभी messageकहा जाता है request।
समस्या यह है कि chrome.tabs.getSelected अतुल्यकालिक है। नीचे दिया गया यह कोड आमतौर पर उम्मीद के मुताबिक काम नहीं करेगा। 'टैबलिंक' का मान तब भी अपरिभाषित होगा जब इसे कंसोल पर लिखा गया हो क्योंकि getSelected ने अभी तक कॉलबैक को लागू नहीं किया है जो मान को रीसेट करता है:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
समाधान उस कोड को लपेटना है जहां आप किसी फ़ंक्शन में मान का उपयोग कर रहे हैं और जिसे getSelected द्वारा लागू किया गया है। इस तरह से आपको हमेशा एक मूल्य निर्धारित करने की गारंटी दी जाती है, क्योंकि आपके कोड को निष्पादित होने से पहले मूल्य प्रदान करने के लिए इंतजार करना होगा।
कुछ इस तरह का प्रयास करें:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
नमस्ते यहाँ एक Google Chrome नमूना है जो वर्तमान साइट को एक मित्र को ईमेल करता है। मूल विचार यह है कि आप क्या चाहते हैं ... सबसे पहले यह पृष्ठ की सामग्री (आपके लिए इंटरसेस्टिंग नहीं) प्राप्त करता है ... बाद में इसे URL मिलता है (<- अच्छा हिस्सा)
इसके अतिरिक्त यह एक अच्छा काम करने वाला कोड उदाहरण है, जिसे मैं डॉक्यूमेंट्स पढ़ने के लिए सबसे ज्यादा पसंद करता हूं।
यहां पाया जा सकता है: इस पृष्ठ को ईमेल करें
यह समाधान पहले से ही परीक्षण किया गया है।
मेनिफेस्ट.जेन्सन में एपीआई के लिए अनुमतियाँ सेट करें
"permissions": [ ...
"tabs",
"activeTab",
"<all_urls>"
]
पहले लोड कॉल फ़ंक्शन पर। https://developer.chrome.com/extensions/tabs#event-onActivated
chrome.tabs.onActivated.addListener((activeInfo) => {
sendCurrentUrl()
})
परिवर्तन कॉल फ़ंक्शन पर। https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
chrome.tabs.onSelectionChanged.addListener(() => {
sendCurrentUrl()
})
URL प्राप्त करने के लिए फ़ंक्शन
function sendCurrentUrl() {
chrome.tabs.getSelected(null, function(tab) {
var tablink = tab.url
console.log(tablink)
})
उपयोग करने वालों के लिए context menu api, डॉक्स टैब जानकारी प्राप्त करने के तरीके के बारे में तुरंत स्पष्ट नहीं हैं।
chrome.contextMenus.onClicked.addListener(function(info, tab) {
console.log(info);
return console.log(tab);
});
आपको इस पर जांच करनी होगी ।
एचटीएमएल
<button id="saveActionId"> Save </button>
manifest.json
"permissions": [
"activeTab",
"tabs"
]
जावास्क्रिप्ट
नीचे दिए गए कोड बटन के हिस्से के रूप में सक्रिय विंडो के सभी यूआरएल को JSON ऑब्जेक्ट में सहेजेंगे।
var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
myArray = [];
chrome.tabs.query({"currentWindow": true}, //{"windowId": targetWindow.id, "index": tabPosition});
function (array_of_Tabs) { //Tab tab
arrayLength = array_of_Tabs.length;
//alert(arrayLength);
for (var i = 0; i < arrayLength; i++) {
myArray.push(array_of_Tabs[i].url);
}
obj = JSON.parse(JSON.stringify(myArray));
});
}, false);