ब्यौरा
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:// URL शामिल करें. यह नियंत्रित करने के लिए कि आपके आइटम किन दस्तावेज़ों में दिखाए जा सकते हैं,
create()
या update()
तरीकों को कॉल करने पर, documentUrlPatterns
फ़ील्ड.
आप जितने चाहें उतने संदर्भ मेन्यू आइटम बना सकते हैं. हालांकि, अगर आपके एक्सटेंशन से एक से ज़्यादा आइटम दिखाई देता है, तो Google Chrome उन्हें अपने आप एक 'माता-पिता' मेन्यू में छोटा कर देता है.
उदाहरण
इस एपीआई को आज़माने के लिए, chrome-extension-samples से contextमेन्यूs एपीआई उदाहरण इंस्टॉल करें डेटा स्टोर करने की जगह.
टाइप
ContextType
मेन्यू के अलग-अलग कॉन्टेक्स्ट. 'सभी' को चुना जा रहा है 'लॉन्चर' को छोड़कर, अन्य सभी कॉन्टेक्स्ट के कॉम्बिनेशन के बराबर है. 'लॉन्चर' संदर्भ सिर्फ़ ऐप्लिकेशन पर काम करता है. इसका इस्तेमाल उस संदर्भ मेन्यू में मेन्यू आइटम जोड़ने के लिए किया जाता है जो लॉन्चर/टास्कबार/डॉक/वगैरह में ऐप्लिकेशन आइकॉन को क्लिक करने पर दिखता है. लॉन्चर कॉन्टेक्स्ट मेन्यू में असल में जो सुविधाएं काम करती हैं उन्हें अलग-अलग प्लैटफ़ॉर्म पर सीमित कर सकते हैं.
Enum
"सभी"
"पेज"
"फ़्रेम"
"चुनना"
"लिंक"
"बदलाव किया जा सकता है"
"इमेज"
"वीडियो"
"ऑडियो"
"लॉन्चर"
"browser_action"
"page_action"
"कार्रवाई"
CreateProperties
नए संदर्भ मेन्यू आइटम की प्रॉपर्टी.
प्रॉपर्टी
-
सही का निशान लगाया गया
बूलियन ज़रूरी नहीं
चेकबॉक्स या रेडियो बटन की शुरुआती स्थिति: चुने गए के लिए
true
, नहीं चुने गए के लिएfalse
. किसी ग्रुप में, एक बार में सिर्फ़ एक रेडियो बटन चुना जा सकता है. -
कॉन्टेक्स्ट
[ContextType, ...ContextType[]] ज़रूरी नहीं है
उन कॉन्टेक्स्ट की सूची जिनमें यह मेन्यू आइटम दिखेगा. डिफ़ॉल्ट तौर पर, यह
['page']
पर सेट होता है. -
documentUrlPatterns
स्ट्रिंग[] ज़रूरी नहीं
आइटम को सिर्फ़ उन दस्तावेज़ों या फ़्रेम पर लागू होने से रोकता है जिनका यूआरएल दिए गए पैटर्न में से किसी एक से मेल खाता है. पैटर्न के फ़ॉर्मैट के बारे में जानकारी के लिए, मैच पैटर्न देखें.
-
चालू किया गया
बूलियन ज़रूरी नहीं
यह संदर्भ मेन्यू आइटम चालू है या बंद है. डिफ़ॉल्ट तौर पर, यह
true
पर सेट होता है. -
आईडी
स्ट्रिंग ज़रूरी नहीं
इस आइटम को असाइन किया जाने वाला यूनीक आईडी. इवेंट के पेजों के लिए ज़रूरी है. इस एक्सटेंशन के लिए किसी अन्य आईडी के समान नहीं हो सकता.
-
parentId
string | नंबर वैकल्पिक
पैरंट मेन्यू आइटम का आईडी; इससे आइटम पहले जोड़े गए आइटम का चाइल्ड बन जाता है.
-
targetUrlPatterns
स्ट्रिंग[] ज़रूरी नहीं
documentUrlPatterns
की तरह ही,img
,audio
, औरvideo
टैग केsrc
एट्रिब्यूट औरa
टैग केhref
एट्रिब्यूट पर आधारित फ़िल्टर. -
title
स्ट्रिंग ज़रूरी नहीं
आइटम में दिखाया जाने वाला टेक्स्ट; अगर
type
separator
नहीं है, तो यह ज़रूरी है. जब संदर्भselection
हो, तो चुने गए टेक्स्ट को दिखाने के लिए स्ट्रिंग के अंदर%s
का इस्तेमाल करें. उदाहरण के लिए, अगर इस पैरामीटर का मान "Translate '%s' है टू पिग लैटिन" और जब उपयोगकर्ता "कूल" शब्द चुनता है, तो कॉन्टेक्स्ट मेन्यू आइटम यह होता है: "'कूल' का अनुवाद करें' टू पिग लैटिन". -
टाइप
ItemType ज़रूरी नहीं
मेन्यू आइटम का टाइप. डिफ़ॉल्ट तौर पर, यह
normal
पर सेट होता है. -
दिख रहा है
बूलियन ज़रूरी नहीं
आइटम, मेन्यू में दिख रहा है या नहीं.
-
onclick
अमान्य ज़रूरी नहीं
यह एक फ़ंक्शन है, जिसे मेन्यू आइटम पर क्लिक करने पर वापस कॉल किया जाता है. यह किसी सर्विस वर्कर के अंदर उपलब्ध नहीं होता; इसके बजाय, आपको
contextMenus.onClicked
के लिए लिसनर रजिस्टर करना चाहिए.onclick
फ़ंक्शन इस तरह दिखता है:(info: OnClickData, tab: Tab) => {...}
-
जानकारी
क्लिक किए गए आइटम की जानकारी और उस संदर्भ की जानकारी जहां क्लिक किया गया.
-
टैब
उस टैब की जानकारी जहां क्लिक किया गया. यह पैरामीटर प्लैटफ़ॉर्म ऐप्लिकेशन के लिए मौजूद नहीं है.
-
ItemType
मेन्यू आइटम का टाइप.
Enum
"सामान्य"
"चेकबॉक्स"
"रेडियो"
"सेपरेटर"
OnClickData
संदर्भ मेन्यू आइटम पर क्लिक करने पर भेजी जाने वाली जानकारी.
प्रॉपर्टी
-
सही का निशान लगाया गया
बूलियन ज़रूरी नहीं
क्लिक करने के बाद, चेकबॉक्स या रेडियो आइटम की स्थिति बताने वाला फ़्लैग.
-
बदलाव किया जा सकता है
बूलियन
यह बताने वाला फ़्लैग कि एलिमेंट में बदलाव किया जा सकता है या नहीं (टेक्स्ट इनपुट, टेक्स्ट एरिया वगैरह).
-
frameId
नंबर वैकल्पिक
Chrome 51 और उसके बाद वाले वर्शन के लिएउस एलिमेंट के फ़्रेम का आईडी जिसमें संदर्भ मेन्यू पर क्लिक किया गया था, अगर वह किसी फ़्रेम में था.
-
frameUrl
स्ट्रिंग ज़रूरी नहीं
अगर किसी फ़्रेम में था, तो उस एलिमेंट के फ़्रेम का यूआरएल जहां संदर्भ मेन्यू पर क्लिक किया गया था.
-
linkUrl
स्ट्रिंग ज़रूरी नहीं
अगर एलिमेंट कोई लिंक है, तो वह यूआरएल जिस पर ले जाता है.
-
mediaType
स्ट्रिंग ज़रूरी नहीं
'इमेज', 'वीडियो' या 'ऑडियो' में से एक अगर संदर्भ मेन्यू इनमें से किसी एक तरह के एलिमेंट पर चालू था.
-
string | नंबर
उस मेन्यू आइटम का आईडी जिस पर क्लिक किया गया.
-
pageUrl
स्ट्रिंग ज़रूरी नहीं
उस पेज का यूआरएल जहां मेन्यू आइटम पर क्लिक किया गया था. अगर क्लिक किसी ऐसे कॉन्टेक्स्ट में हुआ है जहां कोई मौजूदा पेज नहीं है, तो यह प्रॉपर्टी सेट नहीं होती. जैसे, लॉन्चर कॉन्टेक्स्ट मेन्यू में.
-
parentMenuItemId
string | नंबर वैकल्पिक
क्लिक किए गए आइटम का पैरंट आईडी.
-
selectionText
स्ट्रिंग ज़रूरी नहीं
अगर उपलब्ध हो, तो कॉन्टेक्स्ट चुनने का टेक्स्ट.
-
srcUrl
स्ट्रिंग ज़रूरी नहीं
'src' वाले एलिमेंट के लिए मौजूद होगा यूआरएल.
-
wasChecked
बूलियन ज़रूरी नहीं
क्लिक करने से पहले, चेकबॉक्स या रेडियो आइटम की स्थिति बताने वाला फ़्लैग.
प्रॉपर्टी
ACTION_MENU_TOP_LEVEL_LIMIT
टॉप लेवल एक्सटेंशन आइटम की ज़्यादा से ज़्यादा संख्या, जिन्हें किसी एक्सटेंशन के कार्रवाई संदर्भ मेन्यू में जोड़ा जा सकता है. इस सीमा से ज़्यादा आइटम को अनदेखा कर दिया जाएगा.
मान
6
तरीके
create()
chrome.contextMenus.create(
createProperties: CreateProperties,
callback?: function,
)
नया संदर्भ मेन्यू आइटम बनाता है. अगर कॉन्टेंट बनाने के दौरान कोई गड़बड़ी होती है, तो हो सकता है कि क्रिएशन कॉलबैक के चालू होने तक, उसका पता न चले; जानकारी runtime.lastError
में होगी.
पैरामीटर
-
createProperties
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
रिटर्न
-
नंबर | स्ट्रिंग
नए आइटम का आईडी.
remove()
chrome.contextMenus.remove(
menuItemId: string | number,
callback?: function,
)
संदर्भ मेन्यू से आइटम हटाता है.
पैरामीटर
-
string | नंबर
उस संदर्भ मेन्यू आइटम का आईडी जिसे हटाना है.
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
रिटर्न
-
प्रॉमिस<void>
Chrome 123 और उसके बाद वाले वर्शनमेनिफ़ेस्ट V3 और उसके बाद के वर्शन में प्रॉमिस काम करते हैं. हालांकि, कॉलबैक की सुविधा इन मामलों में दी जाती है पुराने सिस्टम के साथ काम करने की सुविधा. एक ही फ़ंक्शन कॉल में दोनों का इस्तेमाल नहीं किया जा सकता. कॉन्टेंट बनाने प्रॉमिस उसी टाइप के साथ ठीक होता है जिसे कॉलबैक में पास किया जाता है.
removeAll()
chrome.contextMenus.removeAll(
callback?: function,
)
इस एक्सटेंशन के ज़रिए जोड़े गए सभी संदर्भ मेन्यू आइटम हटा देता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
रिटर्न
-
प्रॉमिस<void>
Chrome 123 और उसके बाद वाले वर्शनमेनिफ़ेस्ट V3 और उसके बाद के वर्शन में प्रॉमिस काम करते हैं. हालांकि, कॉलबैक की सुविधा इन मामलों में दी जाती है पुराने सिस्टम के साथ काम करने की सुविधा. एक ही फ़ंक्शन कॉल में दोनों का इस्तेमाल नहीं किया जा सकता. कॉन्टेंट बनाने प्रॉमिस उसी टाइप के साथ ठीक होता है जिसे कॉलबैक में पास किया जाता है.
update()
chrome.contextMenus.update(
id: string | number,
updateProperties: object,
callback?: function,
)
पहले बनाए गए संदर्भ मेन्यू के आइटम को अपडेट करता है.
पैरामीटर
-
आईडी
string | नंबर
अपडेट किए जाने वाले आइटम का आईडी.
-
updateProperties
ऑब्जेक्ट
अपडेट की जाने वाली प्रॉपर्टी. जो वैल्यू को
contextMenus.create
फ़ंक्शन में इस्तेमाल किया जाता है वही स्वीकार करता है.-
सही का निशान लगाया गया
बूलियन ज़रूरी नहीं
-
कॉन्टेक्स्ट
[ContextType, ...ContextType[]] ज़रूरी नहीं है
-
documentUrlPatterns
स्ट्रिंग[] ज़रूरी नहीं
-
चालू किया गया
बूलियन ज़रूरी नहीं
-
parentId
string | नंबर वैकल्पिक
आइटम का वह आईडी जिसे इस आइटम का पैरंट बनाया जाना है. ध्यान दें: किसी आइटम को उसके डिसेंडेंट का चाइल्ड बनने के लिए सेट नहीं किया जा सकता.
-
targetUrlPatterns
स्ट्रिंग[] ज़रूरी नहीं
-
title
स्ट्रिंग ज़रूरी नहीं
-
टाइप
ItemType ज़रूरी नहीं
-
दिख रहा है
बूलियन ज़रूरी नहीं
Chrome 62 और उसके बाद वाले वर्शन के लिएआइटम, मेन्यू में दिख रहा है या नहीं.
-
onclick
अमान्य ज़रूरी नहीं
onclick
फ़ंक्शन इस तरह दिखता है:(info: OnClickData, tab: Tab) => {...}
-
जानकारीChrome 44 और उसके बाद वाले वर्शन के लिए
-
टैबChrome 44 और उसके बाद वाले वर्शन के लिए
उस टैब की जानकारी जहां क्लिक किया गया. यह पैरामीटर प्लैटफ़ॉर्म ऐप्लिकेशन के लिए मौजूद नहीं है.
-
-
-
कॉलबैक
फ़ंक्शन वैकल्पिक
callback
पैरामीटर ऐसा दिखता है:() => void
रिटर्न
-
प्रॉमिस<void>
Chrome 123 और उसके बाद वाले वर्शनमेनिफ़ेस्ट V3 और उसके बाद के वर्शन में प्रॉमिस काम करते हैं. हालांकि, कॉलबैक की सुविधा इन मामलों में दी जाती है पुराने सिस्टम के साथ काम करने की सुविधा. एक ही फ़ंक्शन कॉल में दोनों का इस्तेमाल नहीं किया जा सकता. कॉन्टेंट बनाने प्रॉमिस उसी टाइप के साथ ठीक होता है जिसे कॉलबैक में पास किया जाता है.
इवेंट
onClicked
chrome.contextMenus.onClicked.addListener(
callback: function,
)
यह तब ट्रिगर होता है, जब संदर्भ मेन्यू के आइटम पर क्लिक किया जाता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(info: OnClickData, tab?: tabs.Tab) => void
-
जानकारी
-
टैब
tabs.Tab ज़रूरी नहीं
-