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