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