ब्यौरा
Google Chrome के कॉन्टेक्स्ट मेन्यू में आइटम जोड़ने के लिए, chrome.contextMenus एपीआई का इस्तेमाल करें. आपके पास यह चुनने का विकल्प होता है कि कॉन्टेक्स्ट मेन्यू में जोड़े गए एक्सटेंशन किस तरह के ऑब्जेक्ट पर लागू हों. जैसे, इमेज, हाइपरलिंक, और पेज.
अनुमतियां
contextMenusएपीआई का इस्तेमाल करने के लिए, आपको अपने एक्सटेंशन के मेनिफ़ेस्ट में "contextMenus" अनुमति का एलान करना होगा. साथ ही,
आपको अपने मेन्यू आइटम के बगल में दिखाने के लिए, 16 x 16 पिक्सल का आइकॉन तय करना चाहिए. उदाहरण के लिए:
{
"name": "My extension",
...
"permissions": [
"contextMenus"
],
"icons": {
"16": "icon-bitty.png",
"48": "icon-small.png",
"128": "icon-large.png"
},
...
}
कॉन्सेप्ट और इस्तेमाल
कॉन्टेक्स्ट मेन्यू के आइटम किसी भी दस्तावेज़ (या दस्तावेज़ में मौजूद फ़्रेम) में दिख सकते हैं. यहां तक कि file:// या chrome:// यूआरएल वाले दस्तावेज़ों में भी. आपके आइटम किन दस्तावेज़ों में दिख सकते हैं, यह कंट्रोल करने के लिए create() या update() तरीके को कॉल करते समय documentUrlPatterns फ़ील्ड की जानकारी दें.
आपके पास ज़रूरत के मुताबिक कॉन्टेक्स्ट मेन्यू आइटम बनाने का विकल्प होता है. हालांकि, अगर आपके एक्सटेंशन से एक से ज़्यादा आइटम एक साथ दिखते हैं, तो Google Chrome उन्हें अपने-आप एक पैरंट मेन्यू में छोटा कर देता है.
इस पेज पर, इस एपीआई के सदस्यों के लिए रेफ़रंस जानकारी मौजूद है. एपीआई इस्तेमाल करने के निर्देशों के लिए, कॉन्टेक्स्ट मेन्यू बनाना लेख पढ़ें.
उदाहरण
इस एपीआई को आज़माने के लिए, chrome-extension-samples डेटाबेस से contextMenus API का उदाहरण इंस्टॉल करें.
टाइप
ContextType
मेन्यू अलग-अलग कॉन्टेक्स्ट में दिख सकता है. 'all' वैल्यू देने का मतलब है कि 'launcher' और 'tab' को छोड़कर, अन्य सभी कॉन्टेक्स्ट का कॉम्बिनेशन. 'लॉन्चर' कॉन्टेक्स्ट का इस्तेमाल सिर्फ़ ऐप्लिकेशन के लिए किया जा सकता है. इसका इस्तेमाल, कॉन्टेक्स्ट मेन्यू में मेन्यू आइटम जोड़ने के लिए किया जाता है. यह मेन्यू, लॉन्चर/टास्कबार/डॉक वगैरह में ऐप्लिकेशन के आइकॉन पर क्लिक करने पर दिखता है. अलग-अलग प्लैटफ़ॉर्म पर, लॉन्चर के कॉन्टेक्स्ट मेन्यू में असल में क्या-क्या इस्तेमाल किया जा सकता है, इस पर पाबंदियां लगाई जा सकती हैं.
Enum
"all"
"page"
"frame"
"selection"
"link"
"editable"
"image"
"video"
"audio"
"launcher"
"action"
यह एक्सटेंशन की कार्रवाई (इसके टूलबार आइकॉन) के कॉन्टेक्स्ट मेन्यू पर लागू होता है.
"tab"
यह टैब स्ट्रिप में मौजूद किसी टैब के कॉन्टेक्स्ट मेन्यू पर लागू होता है.
CreateProperties
कॉन्टेक्स्ट मेन्यू के नए आइटम की प्रॉपर्टी.
प्रॉपर्टी
-
सही का निशान लगाया गया
बूलियन ज़रूरी नहीं
किसी चेकबॉक्स या रेडियो बटन की शुरुआती स्थिति: चुने गए के लिए
true, नहीं चुने गए के लिएfalse. किसी ग्रुप में, एक बार में सिर्फ़ एक रेडियो बटन चुना जा सकता है. -
कॉन्टेक्स्ट
[ContextType, ...ContextType[]] ज़रूरी नहीं
उन कॉन्टेक्स्ट की सूची जिनमें यह मेन्यू आइटम दिखेगा. डिफ़ॉल्ट रूप से, यह
['page']पर सेट होता है. -
documentUrlPatterns
string[] ज़रूरी नहीं
यह आइटम को सिर्फ़ उन दस्तावेज़ों या फ़्रेम पर लागू करने की अनुमति देता है जिनका यूआरएल, दिए गए पैटर्न में से किसी एक से मैच करता है. पैटर्न के फ़ॉर्मैट के बारे में ज़्यादा जानने के लिए, मैच पैटर्न देखें.
-
चालू किया गया
बूलियन ज़रूरी नहीं
यह कॉन्टेक्स्ट मेन्यू आइटम चालू है या बंद. डिफ़ॉल्ट रूप से, यह
trueपर सेट होता है. -
आईडी
string ज़रूरी नहीं
इस आइटम को असाइन किया जाने वाला यूनीक आईडी. इवेंट पेजों के लिए ज़रूरी है. यह इस एक्सटेंशन के किसी अन्य आईडी जैसा नहीं हो सकता.
-
parentId
string | number ज़रूरी नहीं
पैरंट मेन्यू आइटम का आईडी. इससे आइटम, पहले से जोड़े गए आइटम का चाइल्ड बन जाता है.
-
targetUrlPatterns
string[] ज़रूरी नहीं
documentUrlPatternsकी तरह ही,img,audio, औरvideoटैग केsrcएट्रिब्यूट औरaटैग केhrefएट्रिब्यूट के आधार पर फ़िल्टर. -
title
string ज़रूरी नहीं
आइटम में दिखने वाला टेक्स्ट; यह ज़रूरी है, जब तक कि
typeकी वैल्यूseparatorन हो. जब कॉन्टेक्स्टselectionहो, तब चुने गए टेक्स्ट को दिखाने के लिए स्ट्रिंग में%sका इस्तेमाल करें. उदाहरण के लिए, अगर इस पैरामीटर की वैल्यू "'%s' का पिग लैटिन में अनुवाद करें" है और उपयोगकर्ता "cool" शब्द चुनता है, तो चुने गए शब्द के लिए कॉन्टेक्स्ट मेन्यू आइटम "'cool' का पिग लैटिन में अनुवाद करें" होगा. -
टाइप
ItemType ज़रूरी नहीं है
मेन्यू आइटम का टाइप. डिफ़ॉल्ट रूप से, यह
normalपर सेट होता है. -
दिख रहा है
बूलियन ज़रूरी नहीं
क्या आइटम, मेन्यू में दिखता है.
-
onclick
void ज़रूरी नहीं
मेन्यू आइटम पर क्लिक करने पर, कॉलबैक किया जाने वाला फ़ंक्शन. यह सर्विस वर्कर में उपलब्ध नहीं है. इसके बजाय, आपको
contextMenus.onClickedके लिए एक लिसनर रजिस्टर करना चाहिए.onclickफ़ंक्शन इस तरह दिखता है:(info: OnClickData, tab: Tab) => {...}
-
जानकारी
क्लिक किए गए आइटम और क्लिक किए जाने के कॉन्टेक्स्ट के बारे में जानकारी.
-
टैब
उस टैब की जानकारी जहां क्लिक किया गया था. यह पैरामीटर, प्लैटफ़ॉर्म ऐप्लिकेशन के लिए मौजूद नहीं है.
-
ItemType
मेन्यू आइटम का टाइप.
Enum
"normal"
"checkbox"
"radio"
"separator"
OnClickData
कॉन्टेक्स्ट मेन्यू के किसी आइटम पर क्लिक करने पर भेजी गई जानकारी.
प्रॉपर्टी
-
सही का निशान लगाया गया
बूलियन ज़रूरी नहीं
इस फ़्लैग से, क्लिक किए जाने के बाद चेकबॉक्स या रेडियो आइटम की स्थिति का पता चलता है.
-
बदलाव किया जा सकता है
बूलियन
यह फ़्लैग बताता है कि एलिमेंट में बदलाव किया जा सकता है या नहीं. जैसे, टेक्स्ट इनपुट, टेक्स्टएरिया वगैरह.
-
frameId
number ज़रूरी नहीं
Chrome 51 और इसके बाद के वर्शन Chrome 148 के बाद से browser.*अगर कॉन्टेक्स्ट मेन्यू किसी फ़्रेम में था, तो उस एलिमेंट के फ़्रेम का आईडी जिस पर क्लिक किया गया था.
-
frameUrl
string ज़रूरी नहीं
अगर कॉन्टेक्स्ट मेन्यू किसी फ़्रेम में था, तो उस एलिमेंट के फ़्रेम का यूआरएल जहां कॉन्टेक्स्ट मेन्यू पर क्लिक किया गया था.
-
linkUrl
string ज़रूरी नहीं
अगर एलिमेंट कोई लिंक है, तो वह यूआरएल जिस पर यह ले जाता है.
-
mediaType
string ज़रूरी नहीं
अगर कॉन्टेक्स्ट मेन्यू को इनमें से किसी एक तरह के एलिमेंट पर चालू किया गया था, तो 'इमेज', 'वीडियो' या 'ऑडियो' में से कोई एक.
-
स्ट्रिंग | नंबर
क्लिक किए गए मेन्यू आइटम का आईडी.
-
pageUrl
string ज़रूरी नहीं
उस पेज का यूआरएल जहां मेन्यू आइटम पर क्लिक किया गया था. अगर क्लिक किसी ऐसे कॉन्टेक्स्ट में हुआ है जहां कोई मौजूदा पेज नहीं है, तो यह प्रॉपर्टी सेट नहीं होती. जैसे, लॉन्चर के कॉन्टेक्स्ट मेन्यू में.
-
parentMenuItemId
string | number ज़रूरी नहीं
क्लिक किए गए आइटम का पैरंट आईडी, अगर कोई है.
-
selectionText
string ज़रूरी नहीं
कॉन्टेक्स्ट चुनने के लिए टेक्स्ट, अगर कोई हो.
-
srcUrl
string ज़रूरी नहीं
यह 'src' यूआरएल वाले एलिमेंट के लिए मौजूद होगा.
-
wasChecked
बूलियन ज़रूरी नहीं
एक फ़्लैग, जो क्लिक किए जाने से पहले चेकबॉक्स या रेडियो आइटम की स्थिति दिखाता है.
प्रॉपर्टी
ACTION_MENU_TOP_LEVEL_LIMIT
एक्सटेंशन ऐक्शन के कॉन्टेक्स्ट मेन्यू में, टॉप लेवल एक्सटेंशन आइटम ज़्यादा से ज़्यादा कितने जोड़े जा सकते हैं. इस सीमा से ज़्यादा आइटम को अनदेखा कर दिया जाएगा.
वैल्यू
6
तरीके
create()
browser.contextMenus.create(
createProperties: CreateProperties,
callback?: function,
): number | string
कॉन्टेक्स्ट मेन्यू का नया आइटम बनाता है. अगर क्रिएशन के दौरान कोई गड़बड़ी होती है, तो हो सकता है कि क्रिएशन कॉलबैक ट्रिगर होने तक उसका पता न चले. इसकी जानकारी runtime.lastError में दी जाएगी.
पैरामीटर
-
createProperties
-
कॉलबैक
function ज़रूरी नहीं
callbackपैरामीटर कुछ ऐसा दिखता है:() => void
रिटर्न
-
number | string
नए आइटम का आईडी.
remove()
browser.contextMenus.remove(
menuItemId: string | number,
): Promise<void>
कॉन्टेक्स्ट मेन्यू का कोई आइटम हटाता है.
पैरामीटर
-
स्ट्रिंग | नंबर
कॉन्टेक्स्ट मेन्यू के उस आइटम का आईडी जिसे हटाना है.
रिटर्न
-
वादा<शून्य>
Chrome 123+ Chrome 148 से browser.*कॉन्टेक्स्ट मेन्यू हटाए जाने पर रिज़ॉल्व होता है.
removeAll()
browser.contextMenus.removeAll(): Promise<void>
इस एक्सटेंशन से जोड़े गए सभी कॉन्टेक्स्ट मेन्यू आइटम हटाता है.
रिटर्न
-
वादा<शून्य>
Chrome 123+ Chrome 148 से browser.*यह प्रॉमिस तब रिज़ॉल्व होता है, जब हटाने की प्रोसेस पूरी हो जाती है.
update()
browser.contextMenus.update(
id: string | number,
updateProperties: object,
): Promise<void>
पहले से बनाए गए कॉन्टेक्स्ट मेन्यू आइटम को अपडेट करता है.
पैरामीटर
-
आईडी
स्ट्रिंग | नंबर
अपडेट किए जाने वाले आइटम का आईडी.
-
updateProperties
ऑब्जेक्ट
अपडेट की जाने वाली प्रॉपर्टी. यह
contextMenus.createफ़ंक्शन जैसी ही वैल्यू स्वीकार करता है.-
सही का निशान लगाया गया
बूलियन ज़रूरी नहीं
-
कॉन्टेक्स्ट
[ContextType, ...ContextType[]] ज़रूरी नहीं
-
documentUrlPatterns
string[] ज़रूरी नहीं
-
चालू किया गया
बूलियन ज़रूरी नहीं
-
parentId
string | number ज़रूरी नहीं
उस आइटम का आईडी जिसे इस आइटम का पैरंट बनाना है. ध्यान दें: किसी आइटम को उसके ही डिसेंडेंट का चाइल्ड आइटम नहीं बनाया जा सकता.
-
targetUrlPatterns
string[] ज़रूरी नहीं
-
title
string ज़रूरी नहीं
-
टाइप
ItemType ज़रूरी नहीं है
-
दिख रहा है
बूलियन ज़रूरी नहीं
Chrome 62+ browser.* Chrome 148 सेक्या आइटम, मेन्यू में दिखता है.
-
onclick
void ज़रूरी नहीं
onclickफ़ंक्शन इस तरह दिखता है:(info: OnClickData, tab: Tab) => {...}
-
जानकारीChrome 44+ browser.* Chrome 148 के बाद से
-
टैबChrome 44+ browser.* Chrome 148 के बाद से
उस टैब की जानकारी जहां क्लिक किया गया था. यह पैरामीटर, प्लैटफ़ॉर्म ऐप्लिकेशन के लिए मौजूद नहीं है.
-
-
रिटर्न
-
वादा<शून्य>
Chrome 123+ Chrome 148 से browser.*कॉन्टेक्स्ट मेन्यू अपडेट होने पर रिज़ॉल्व होता है.
इवेंट
onClicked
browser.contextMenus.onClicked.addListener(
callback: function,
)
यह इवेंट तब ट्रिगर होता है, जब कॉन्टेक्स्ट मेन्यू के किसी आइटम पर क्लिक किया जाता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callbackपैरामीटर कुछ ऐसा दिखता है:(info: OnClickData, tab?: tabs.Tab) => void
-
जानकारी
-
टैब
tabs.Tab ज़रूरी नहीं
-