एमआईएम प्रकार प्राप्त करने के लिए सिर्फ एक नया अनुरोध जारी करना थोड़ा भारी है, और भरोसेमंद नहीं है। उदाहरण के लिए, यदि वर्तमान में प्रदर्शित पृष्ठ POST फॉर्म सबमिशन का परिणाम है, तो GET
अनुरोध जारी करना आम तौर पर उसी पृष्ठ पर नहीं पहुंचता है।
यदि आप ऐसे एक्सटेंशन को विकसित कर रहे हैं जिसे अक्सर इस जानकारी तक पहुंच की आवश्यकता है, तो प्रतिक्रियाओं को ट्रैक करने के लिए chrome.webRequest
API का उपयोग करें।
- इस विस्तार केवल वे टैब जो के बाद विस्तार भरी हुई है लोड किए गए हैं के लिए परिणाम दिखाता है:
// background.js
var tabToMimeType = {};
chrome.webRequest.onHeadersReceived.addListener(function(details) {
if (details.tabId !== -1) {
var header = getHeaderFromHeaders(details.responseHeaders, 'content-type');
// If the header is set, use its value. Otherwise, use undefined.
tabToMimeType[details.tabId] = header && header.value.split(';', 1)[0];
}
}, {
urls: ['*://*/*'],
types: ['main_frame']
}, ['responseHeaders']);
chrome.browserAction.onClicked.addListener(function(tab) {
alert('Tab with URL ' + tab.url + ' has MIME-type ' + tabToMimeType[tab.id]);
});
function getHeaderFromHeaders(headers, headerName) {
for (var i = 0; i < headers.length; ++i) {
var header = headers[i];
if (header.name.toLowerCase() === headerName) {
return header;
}
}
}
नोट: निम्न डेमो एक्सटेंशन ब्राउज़र बटन को क्लिक पर सामग्री प्रकार को दर्शाता है।
- यह केवल http/https पृष्ठों पर काम करता है। ftp :, फ़ाइल :, फाइल सिस्टम :, ब्लॉब :, डेटा: समर्थित नहीं है।
- जब कोई MIME- प्रकार सर्वर द्वारा निर्दिष्ट नहीं किया गया है या जब MIME- प्रकार
text/plain
है, तो क्रोम सेट होने तक MIME sniffing पर वापस आ जाता है। पहले मामले में, पता चला एमआईएम-प्रकार कुछ भी हो सकता है। बाद के मामले में, डिफ़ॉल्ट MIME-type text/plain
है।
पूर्णता के लिए, यहाँ एक manifest.json
फ़ाइल है कि पिछले कोड का परीक्षण करने के लिए इस्तेमाल किया जा सकता है:
{
"name": "Click button to see MIME",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"],
"persistent": true
},
"browser_action": {
"default_title": "Show MIME"
},
"permissions": [
"webRequest",
"activeTab",
"*://*/*"
]
}
स्रोत
2014-01-10 11:18:03
क्या आपने कभी इस कार्यक्षमता के साथ विस्तार विकसित किया है? मुझे ऐसा विस्तार होना अच्छा लगेगा, लेकिन कुछ व्यक्तिगत उपयोगों के लिए कोड को कैसे कोड करना सीखना नहीं चाहते हैं। – msbg