EyeDropper API की मदद से, लेखक कस्टम कलर पिकर बनाने के लिए, ब्राउज़र से मिलने वाले आईड्रॉपर का इस्तेमाल कर सकते हैं.
EyeDropper API क्या है?
कई क्रिएटिव ऐप्लिकेशन, उपयोगकर्ताओं को ऐप्लिकेशन विंडो के कुछ हिस्सों या पूरी स्क्रीन से रंग चुनने की सुविधा देते हैं. आम तौर पर, इसके लिए आईड्रॉपर टूल का इस्तेमाल किया जाता है.
उदाहरण के लिए, Photoshop में उपयोगकर्ता कैनवस से रंगों का सैंपल ले सकते हैं, ताकि उन्हें रंग का अनुमान न लगाना पड़े और रंग गलत न हो जाए. PowerPoint में भी आईड्रॉपर टूल होता है. यह किसी आकार की आउटलाइन या उसे भरने के लिए रंग सेट करते समय काम आता है. Chromium DevTools में भी एक ऐयरड्रॉपर होता है. इसका इस्तेमाल, सीएसएस स्टाइल पैनल में रंगों में बदलाव करते समय किया जा सकता है. इससे आपको रंग कोड को याद रखने या कहीं से कॉपी करने की ज़रूरत नहीं पड़ती.
अगर वेब टेक्नोलॉजी का इस्तेमाल करके कोई क्रिएटिव ऐप्लिकेशन बनाया जा रहा है, तो हो सकता है कि आप अपने उपयोगकर्ताओं को मिलती-जुलती सुविधा देना चाहें. हालांकि, वेब पर ऐसा करना मुश्किल है. अगर ऐसा किया जा सकता है, तो खास तौर पर, अगर आपको सिर्फ़ मौजूदा ब्राउज़र टैब से नहीं, बल्कि पूरे डिवाइस की स्क्रीन (उदाहरण के लिए, किसी दूसरे ऐप्लिकेशन से) के रंगों का सैंपल लेना है. ब्राउज़र से मिलने वाला कोई ऐसा ऐड-ऑन टूल नहीं है जिसका इस्तेमाल वेब ऐप्लिकेशन अपनी ज़रूरतों के हिसाब से कर सकें.
<input type="color">
एलिमेंट पास आता है. डेस्कटॉप डिवाइसों पर काम करने वाले Chromium ब्राउज़र में, यह कलर पिकर ड्रॉप-डाउन में एक मददगार आइड्रोपपर उपलब्ध कराता है. हालांकि, इसका इस्तेमाल करने का मतलब है कि आपके ऐप्लिकेशन को सीएसएस की मदद से इसे पसंद के मुताबिक बनाना होगा. साथ ही, इसे अपने ऐप्लिकेशन के अन्य हिस्सों के लिए उपलब्ध कराने के लिए, इसे थोड़े से JavaScript में रैप करना होगा. इस विकल्प को चुनने का मतलब यह भी है कि अन्य ब्राउज़र के पास इस सुविधा का ऐक्सेस नहीं होगा.
EyeDropper API, स्क्रीन से रंगों का सैंपल लेने का तरीका उपलब्ध कराकर, इस कमी को पूरा करता है.
EyeDropper API का इस्तेमाल करने का तरीका
ब्राउज़र समर्थन
सुविधा की पहचान और ब्राउज़र के साथ काम करने की सुविधा
एपीआई का इस्तेमाल करने से पहले, पक्का करें कि वह उपलब्ध हो.
if ('EyeDropper' in window) {
// The API is available!
}
EyeDropper API, Edge या Chrome जैसे Chromium पर आधारित ब्राउज़र के वर्शन 95 से काम करता है.
एपीआई का इस्तेमाल करना
एपीआई का इस्तेमाल करने के लिए, EyeDropper
ऑब्जेक्ट बनाएं और फिर उसका open()
तरीका कॉल करें.
const eyeDropper = new EyeDropper();
open()
तरीका एक प्रॉमिस दिखाता है. यह प्रॉमिस तब रिज़ॉल्व होता है, जब उपयोगकर्ता स्क्रीन पर कोई पिक्सल चुनता है. रिज़ॉल्व की गई वैल्यू, sRGBHex फ़ॉर्मैट (#RRGGBB
) में पिक्सल के रंग का ऐक्सेस देती है. अगर उपयोगकर्ता esc बटन दबाकर, ऐयरड्रॉपर मोड छोड़ देता है, तो प्रॉमिस अस्वीकार कर दिया जाता है.
try {
const result = await eyeDropper.open();
// The user selected a pixel, here is its color:
const colorHexValue = result.sRGBHex;
} catch (err) {
// The user escaped the eyedropper mode.
}
ऐप्लिकेशन का कोड, ड्रॉपपर मोड को भी बंद कर सकता है. अगर ऐप्लिकेशन की स्थिति में काफ़ी बदलाव होता है, तो यह सुविधा काम आ सकती है. हो सकता है कि कोई पॉप-अप डायलॉग दिखे और उपयोगकर्ता के इनपुट की ज़रूरत पड़े. इसके बाद, ऐयरपॉइंट मोड बंद कर दिया जाना चाहिए.
ऐयरड्रॉपर को रद्द करने के लिए, AbortController ऑब्जेक्ट के सिग्नल का इस्तेमाल किया जा सकता है और उसे open()
तरीके में पास किया जा सकता है.
const abortController = new AbortController();
try {
const result = await eyeDropper.open({signal: abortController.signal});
// ...
} catch (err) {
// ...
}
// And then later, when the eyedropper mode needs to be stopped:
abortController.abort();
सभी चीज़ों को एक साथ जोड़कर, यहां आपको फिर से इस्तेमाल किया जा सकने वाला असाइनिक फ़ंक्शन मिल सकता है:
async function sampleColorFromScreen(abortController) {
const eyeDropper = new EyeDropper();
try {
const result = await eyeDropper.open({signal: abortController.signal});
return result.sRGBHex;
} catch (e) {
return null;
}
}
इसे आज़माएं!
Windows या Mac पर, Microsoft Edge या Google Chrome 95 या उसके बाद के वर्शन का इस्तेमाल करके, EyeDropper के किसी एक डेमो को खोलें.
उदाहरण के लिए, रंगों के गेम का डेमो आज़माएं. चलाएं बटन दबाएं और तय समय में, सबसे नीचे दी गई सूची से ऐसा रंग चुनें जो सबसे ऊपर दिए गए रंग के स्क्वेयर से मैच करता हो.
निजता और सुरक्षा से जुड़ी बातें
इस वेब एपीआई को देखने पर, यह आसान लग सकता है. हालांकि, इसमें निजता और सुरक्षा से जुड़ी एक गंभीर समस्या छिपी है. अगर कोई नुकसान पहुंचाने वाली वेबसाइट आपकी स्क्रीन से पिक्सल देखना शुरू कर दे, तो क्या होगा?
इस समस्या को हल करने के लिए, एपीआई स्पेसिफ़िकेशन में ये तरीके अपनाने ज़रूरी हैं:
- पहला, एपीआई, उपयोगकर्ता के इंटेंट के बिना, ऐयरड्रॉपर मोड को शुरू नहीं होने देता.
open()
तरीके को सिर्फ़ उपयोगकर्ता की कार्रवाई (जैसे, बटन पर क्लिक) के जवाब में कॉल किया जा सकता है. - दूसरा, उपयोगकर्ता की सहमति के बिना, पिक्सल की कोई जानकारी फिर से नहीं ली जा सकती.
open()
से मिलने वाला प्रॉमिस, उपयोगकर्ता की कार्रवाई (पिक्सल पर क्लिक करना) के जवाब में सिर्फ़ रंग की वैल्यू पर रिज़ॉल्व होता है. इसलिए, ऐप्लिकेशन के बैकग्राउंड में, ऐप्लिकेशन इस्तेमाल करने वाले व्यक्ति को बताए बिना, ऐड-ऑन का इस्तेमाल नहीं किया जा सकता. - उपयोगकर्ताओं को आसानी से ऐयरड्रॉपर मोड का पता चल सके, इसके लिए ब्राउज़र को इस मोड को साफ़ तौर पर दिखाना होगा. इस वजह से, कुछ देर बाद सामान्य माउस कर्सर हट जाता है और इसके बजाय, खास यूज़र इंटरफ़ेस दिखता है. ऐयरड्रॉपर मोड शुरू होने और उपयोगकर्ता के किसी पिक्सल को चुनने के बीच भी देरी होती है. इससे यह पक्का किया जा सकता है कि उपयोगकर्ता को मैग्नीफ़ाइंग ग्लास देखने का समय मिला है.
- आखिर में, उपयोगकर्ता किसी भी समय esc बटन दबाकर, ड्रॉपपर मोड को बंद कर सकते हैं.
सुझाव/राय दें या शिकायत करें
Chromium की टीम को EyeDropper API के साथ आपके अनुभवों के बारे में जानना है.
हमें एपीआई के डिज़ाइन के बारे में बताएं
क्या एपीआई में कुछ ऐसा है जो आपकी उम्मीद के मुताबिक काम नहीं करता? क्या आपके आइडिया को लागू करने के लिए, कोई तरीका या प्रॉपर्टी मौजूद नहीं है? क्या आपका सुरक्षा मॉडल के बारे में कोई सवाल या टिप्पणी है? एपीआई के GitHub repo पर, खास जानकारी से जुड़ी समस्या दर्ज करें या किसी मौजूदा समस्या में अपने सुझाव जोड़ें.
लागू करने से जुड़ी समस्या की शिकायत करना
क्या आपको Chromium को लागू करने में कोई गड़बड़ी मिली? या क्या इसे लागू करने का तरीका, खास जानकारी से अलग है?
new.crbug.com पर गड़बड़ी की शिकायत करें. इसमें ज़्यादा से ज़्यादा जानकारी शामिल करें. साथ ही, गड़बड़ी को दोहराने के लिए आसान निर्देश दें. इसके बाद, Components बॉक्स में Blink>Forms>Color
डालें.
Glitch, तुरंत और आसानी से समस्या की जानकारी शेयर करने के लिए बहुत अच्छा है.
एपीआई के लिए सहायता दिखाना
क्या आपको EyeDropper API का इस्तेमाल करना है? सार्वजनिक तौर पर सहायता करने से, Chromium टीम को सुविधाओं को प्राथमिकता देने में मदद मिलती है. साथ ही, इससे अन्य ब्राउज़र वेंडर को यह पता चलता है कि इन सुविधाओं को उपलब्ध कराना कितना ज़रूरी है. #EyeDropper
हैशटैग का इस्तेमाल करके, @ChromiumDev को ट्वीट करें और हमें बताएं कि इसका इस्तेमाल कहां और कैसे किया जा रहा है.
मदद के लिए लिंक
- सार्वजनिक तौर पर जानकारी देने की सुविधा
- स्पेसिफ़िकेशन का ड्राफ़्ट
- EyeDropper API का डेमो | EyeDropper API का डेमो सोर्स
- Chromium ट्रैकिंग बग
- ChromeStatus.com पर मौजूद जानकारी
- Blink कॉम्पोनेंट:
Blink>Forms>Color
- टैग की समीक्षा
- WebKit की पोज़िशन का अनुरोध
- Mozilla की ओर से पोज़िशन का अनुरोध
- शिप करने का इंटेंट
आभार
EyeDropper API को Microsoft Edge टीम के Ionel Popescu ने तय किया और लागू किया था. इस पोस्ट की समीक्षा जो मेडली ने की है.