chrome.contextMenus

refresh date: 2026-09-25 robots: noindex

ब्यौरा

Google Chrome के कॉन्टेक्स्ट मेन्यू में आइटम जोड़ने के लिए, chrome.contextMenus एपीआई का इस्तेमाल करें. आपके पास यह चुनने का विकल्प होता है कि कॉन्टेक्स्ट मेन्यू में जोड़े गए एक्सटेंशन किस तरह के ऑब्जेक्ट पर लागू हों. जैसे, इमेज, हाइपरलिंक, और पेज.

अनुमतियां

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

Chrome 44 या इसके बाद का वर्शन

मेन्यू अलग-अलग कॉन्टेक्स्ट में दिख सकता है. 'all' वैल्यू देने का मतलब है कि 'launcher' और 'tab' को छोड़कर, अन्य सभी कॉन्टेक्स्ट का कॉम्बिनेशन. 'लॉन्चर' कॉन्टेक्स्ट का इस्तेमाल सिर्फ़ ऐप्लिकेशन के लिए किया जा सकता है. इसका इस्तेमाल, कॉन्टेक्स्ट मेन्यू में मेन्यू आइटम जोड़ने के लिए किया जाता है. यह मेन्यू, लॉन्चर/टास्कबार/डॉक वगैरह में ऐप्लिकेशन के आइकॉन पर क्लिक करने पर दिखता है. अलग-अलग प्लैटफ़ॉर्म पर, लॉन्चर के कॉन्टेक्स्ट मेन्यू में असल में क्या-क्या इस्तेमाल किया जा सकता है, इस पर पाबंदियां लगाई जा सकती हैं.

Enum

"all"

"page"

"frame"

"selection"

"link"

"editable"

"image"

"video"

"audio"

"launcher"

"action"
यह एक्सटेंशन की कार्रवाई (इसके टूलबार आइकॉन) के कॉन्टेक्स्ट मेन्यू पर लागू होता है.

"tab"
यह टैब स्ट्रिप में मौजूद किसी टैब के कॉन्टेक्स्ट मेन्यू पर लागू होता है.

CreateProperties

Chrome 123 या इसके बाद का वर्शन

कॉन्टेक्स्ट मेन्यू के नए आइटम की प्रॉपर्टी.

प्रॉपर्टी

  • सही का निशान लगाया गया

    बूलियन ज़रूरी नहीं

    किसी चेकबॉक्स या रेडियो बटन की शुरुआती स्थिति: चुने गए के लिए 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

Chrome 44 या इसके बाद का वर्शन

मेन्यू आइटम का टाइप.

Enum

"normal"

"checkbox"

"radio"

"separator"

OnClickData

कॉन्टेक्स्ट मेन्यू के किसी आइटम पर क्लिक करने पर भेजी गई जानकारी.

प्रॉपर्टी

  • सही का निशान लगाया गया

    बूलियन ज़रूरी नहीं

    इस फ़्लैग से, क्लिक किए जाने के बाद चेकबॉक्स या रेडियो आइटम की स्थिति का पता चलता है.

  • बदलाव किया जा सकता है

    बूलियन

    यह फ़्लैग बताता है कि एलिमेंट में बदलाव किया जा सकता है या नहीं. जैसे, टेक्स्ट इनपुट, टेक्स्टएरिया वगैरह.

  • frameId

    number ज़रूरी नहीं

    Chrome 51+

    अगर कॉन्टेक्स्ट मेन्यू किसी फ़्रेम में था, तो उस एलिमेंट के फ़्रेम का आईडी जिस पर क्लिक किया गया था.

  • frameUrl

    string ज़रूरी नहीं

    अगर कॉन्टेक्स्ट मेन्यू किसी फ़्रेम में था, तो उस एलिमेंट के फ़्रेम का यूआरएल जहां कॉन्टेक्स्ट मेन्यू पर क्लिक किया गया था.

  • linkUrl

    string ज़रूरी नहीं

    अगर एलिमेंट कोई लिंक है, तो वह यूआरएल जिस पर यह ले जाता है.

  • mediaType

    string ज़रूरी नहीं

    अगर कॉन्टेक्स्ट मेन्यू को इनमें से किसी एक तरह के एलिमेंट पर चालू किया गया था, तो 'इमेज', 'वीडियो' या 'ऑडियो' में से कोई एक.

  • menuItemId

    स्ट्रिंग | नंबर

    क्लिक किए गए मेन्यू आइटम का आईडी.

  • pageUrl

    string ज़रूरी नहीं

    उस पेज का यूआरएल जहां मेन्यू आइटम पर क्लिक किया गया था. अगर क्लिक किसी ऐसे कॉन्टेक्स्ट में हुआ है जहां कोई मौजूदा पेज नहीं है, तो यह प्रॉपर्टी सेट नहीं होती. जैसे, लॉन्चर के कॉन्टेक्स्ट मेन्यू में.

  • parentMenuItemId

    string | number ज़रूरी नहीं

    क्लिक किए गए आइटम का पैरंट आईडी, अगर कोई है.

  • selectionText

    string ज़रूरी नहीं

    कॉन्टेक्स्ट चुनने के लिए टेक्स्ट, अगर कोई हो.

  • srcUrl

    string ज़रूरी नहीं

    यह 'src' यूआरएल वाले एलिमेंट के लिए मौजूद होगा.

  • wasChecked

    बूलियन ज़रूरी नहीं

    एक फ़्लैग, जो क्लिक किए जाने से पहले चेकबॉक्स या रेडियो आइटम की स्थिति दिखाता है.

प्रॉपर्टी

ACTION_MENU_TOP_LEVEL_LIMIT

एक्सटेंशन ऐक्शन के कॉन्टेक्स्ट मेन्यू में, टॉप लेवल एक्सटेंशन आइटम ज़्यादा से ज़्यादा कितने जोड़े जा सकते हैं. इस सीमा से ज़्यादा आइटम को अनदेखा कर दिया जाएगा.

वैल्यू

6

तरीके

create()

chrome.contextMenus.create(
  createProperties: CreateProperties,
  callback?: function,
)
: number | string

कॉन्टेक्स्ट मेन्यू का नया आइटम बनाता है. अगर क्रिएशन के दौरान कोई गड़बड़ी होती है, तो हो सकता है कि क्रिएशन कॉलबैक ट्रिगर होने तक उसका पता न चले. इसकी जानकारी runtime.lastError में दी जाएगी.

पैरामीटर

  • createProperties
  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    () => void

रिटर्न

  • number | string

    नए आइटम का आईडी.

remove()

वादा
chrome.contextMenus.remove(
  menuItemId: string | number,
  callback?: function,
)
: Promise<void>

कॉन्टेक्स्ट मेन्यू का कोई आइटम हटाता है.

पैरामीटर

  • menuItemId

    स्ट्रिंग | नंबर

    कॉन्टेक्स्ट मेन्यू के उस आइटम का आईडी जिसे हटाना है.

  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    () => void

रिटर्न

  • वादा<शून्य>

    Chrome 123 या इसके बाद का वर्शन

    कॉन्टेक्स्ट मेन्यू हटाए जाने पर रिज़ॉल्व होता है.

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

removeAll()

वादा
chrome.contextMenus.removeAll(
  callback?: function,
)
: Promise<void>

इस एक्सटेंशन से जोड़े गए सभी कॉन्टेक्स्ट मेन्यू आइटम हटाता है.

पैरामीटर

  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    () => void

रिटर्न

  • वादा<शून्य>

    Chrome 123 या इसके बाद का वर्शन

    यह प्रॉमिस तब रिज़ॉल्व होता है, जब हटाने की प्रोसेस पूरी हो जाती है.

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

update()

वादा
chrome.contextMenus.update(
  id: string | number,
  updateProperties: object,
  callback?: function,
)
: Promise<void>

पहले से बनाए गए कॉन्टेक्स्ट मेन्यू आइटम को अपडेट करता है.

पैरामीटर

  • आईडी

    स्ट्रिंग | नंबर

    अपडेट किए जाने वाले आइटम का आईडी.

  • updateProperties

    ऑब्जेक्ट

    अपडेट की जाने वाली प्रॉपर्टी. यह contextMenus.create फ़ंक्शन जैसी ही वैल्यू स्वीकार करता है.

    • सही का निशान लगाया गया

      बूलियन ज़रूरी नहीं

    • कॉन्टेक्स्ट

      [ContextType, ...ContextType[]] ज़रूरी नहीं

    • documentUrlPatterns

      string[] ज़रूरी नहीं

    • चालू किया गया

      बूलियन ज़रूरी नहीं

    • parentId

      string | number ज़रूरी नहीं

      उस आइटम का आईडी जिसे इस आइटम का पैरंट बनाना है. ध्यान दें: किसी आइटम को उसके ही डिसेंडेंट का चाइल्ड आइटम नहीं बनाया जा सकता.

    • targetUrlPatterns

      string[] ज़रूरी नहीं

    • title

      string ज़रूरी नहीं

    • टाइप

      ItemType ज़रूरी नहीं है

    • दिख रहा है

      बूलियन ज़रूरी नहीं

      Chrome 62+

      क्या आइटम, मेन्यू में दिखता है.

    • onclick

      void ज़रूरी नहीं

      onclick फ़ंक्शन इस तरह दिखता है:

      (info: OnClickData, tab: Tab) => {...}

      • जानकारी
        Chrome 44 या इसके बाद का वर्शन
      • टैब
        Chrome 44 या इसके बाद का वर्शन

        उस टैब की जानकारी जहां क्लिक किया गया था. यह पैरामीटर, प्लैटफ़ॉर्म ऐप्लिकेशन के लिए मौजूद नहीं है.

  • कॉलबैक

    function ज़रूरी नहीं

    callback पैरामीटर कुछ ऐसा दिखता है:

    () => void

रिटर्न

  • वादा<शून्य>

    Chrome 123 या इसके बाद का वर्शन

    कॉन्टेक्स्ट मेन्यू अपडेट होने पर रिज़ॉल्व होता है.

    प्रॉमिस सिर्फ़ Manifest V3 और इसके बाद के वर्शन के लिए काम करते हैं. अन्य प्लैटफ़ॉर्म के लिए, कॉलबैक का इस्तेमाल करना ज़रूरी है.

इवेंट

onClicked

chrome.contextMenus.onClicked.addListener(
  callback: function,
)

यह इवेंट तब ट्रिगर होता है, जब कॉन्टेक्स्ट मेन्यू के किसी आइटम पर क्लिक किया जाता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर कुछ ऐसा दिखता है:

    (info: OnClickData, tab?: tabs.Tab) => void