chrome.contextMenus

ब्यौरा

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-सैंपल डेटा स्टोर करने की जगह से contextमेन्यूs एपीआई का उदाहरण इंस्टॉल करें.

टाइप

ContextType

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

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

Enum

"page_action"

CreateProperties

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

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

प्रॉपर्टी

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

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

    चेकबॉक्स या रेडियो बटन की शुरुआती स्थिति: चुने गए के लिए true, नहीं चुने गए के लिए false. किसी ग्रुप में, एक बार में सिर्फ़ एक रेडियो बटन चुना जा सकता है.

  • संदर्भ

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

    उन कॉन्टेक्स्ट की सूची जिनमें यह मेन्यू आइटम दिखेगा. डिफ़ॉल्ट वैल्यू ['page'] होती है.

  • documentUrlPatterns

    स्ट्रिंग[] ज़रूरी नहीं है

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

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

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

    यह संदर्भ मेन्यू आइटम चालू है या बंद है. डिफ़ॉल्ट वैल्यू true होती है.

  • id

    स्ट्रिंग ज़रूरी नहीं

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

  • parentId

    स्ट्रिंग|संख्या ज़रूरी नहीं

    पैरंट मेन्यू आइटम का आईडी; इससे आइटम, पहले जोड़े गए आइटम का चाइल्ड आइटम बनता है.

  • targetUrlPatterns

    स्ट्रिंग[] ज़रूरी नहीं है

    documentUrlPatterns की तरह ही, img, audio, और video टैग के src एट्रिब्यूट और a टैग के href एट्रिब्यूट पर आधारित फ़िल्टर.

  • title

    स्ट्रिंग ज़रूरी नहीं

    आइटम में दिखाया जाने वाला टेक्स्ट. यह तब तक ज़रूरी है, जब तक type separator न हो. जब कॉन्टेक्स्ट selection हो, तो चुने गए टेक्स्ट को दिखाने के लिए, स्ट्रिंग में %s का इस्तेमाल करें. उदाहरण के लिए, अगर इस पैरामीटर का मान "'%s' का अनुवाद पिग लैटिन में करें" है और उपयोगकर्ता "कूल" शब्द चुनता है, तो संदर्भ मेन्यू आइटम "कूल लैटिन में अनुवाद करें" होगा.

  • टाइप

    ItemType ज़रूरी नहीं

    मेन्यू आइटम का टाइप. डिफ़ॉल्ट वैल्यू normal होती है.

  • दिख रहा है

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

    मेन्यू में आइटम दिख रहा है या नहीं.

  • onclick

    अमान्य ज़रूरी नहीं

    यह एक ऐसा फ़ंक्शन है जिसे मेन्यू आइटम पर क्लिक करने पर वापस कॉल किया जाता है. यह सर्विस वर्कर में उपलब्ध नहीं है. इसके बजाय, आपको contextMenus.onClicked के लिए लिसनर को रजिस्टर करना चाहिए.

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

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

    • जानकारी

      क्लिक किए गए आइटम के बारे में जानकारी और उस जगह का संदर्भ जहां क्लिक हुआ है.

    • टैब से

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

ItemType

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

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

Enum

OnClickData

जब संदर्भ मेन्यू में मौजूद आइटम पर क्लिक किया जाता है, तब यह जानकारी भेजी जाती है.

प्रॉपर्टी

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

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

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

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

    boolean

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

  • frameId

    नंबर ज़रूरी नहीं

    Chrome 51 और इसके बाद के वर्शन

    उस एलिमेंट के फ़्रेम का आईडी जहां संदर्भ मेन्यू पर क्लिक किया गया था. हालांकि, यह तब ज़रूरी है, जब वह फ़्रेम में हो.

  • frameUrl

    स्ट्रिंग ज़रूरी नहीं

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

  • linkUrl

    स्ट्रिंग ज़रूरी नहीं

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

  • mediaType

    स्ट्रिंग ज़रूरी नहीं

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

  • menuItemId

    string|number

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

  • 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

रिटर्न

  • number|string

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

remove()

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

इससे संदर्भ मेन्यू आइटम हट जाता है.

पैरामीटर

  • menuItemId

    string|number

    हटाए जाने वाले संदर्भ मेन्यू आइटम का आईडी.

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

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

    ()=>void

रिटर्न

  • Promise<void>

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

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

removeAll()

वादा
chrome.contextMenus.removeAll(
  callback?: function,
)

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन ज़रूरी नहीं

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

    ()=>void

रिटर्न

  • Promise<void>

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

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

update()

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

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

पैरामीटर

  • id

    string|number

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

  • updateProperties

    ऑब्जेक्ट

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

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

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

    • संदर्भ

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

    • documentUrlPatterns

      स्ट्रिंग[] ज़रूरी नहीं है

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

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

    • parentId

      स्ट्रिंग|संख्या ज़रूरी नहीं

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

    • targetUrlPatterns

      स्ट्रिंग[] ज़रूरी नहीं है

    • title

      स्ट्रिंग ज़रूरी नहीं

    • टाइप

      ItemType ज़रूरी नहीं

    • दिख रहा है

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

      Chrome 62 और इसके बाद के वर्शन

      मेन्यू में आइटम दिख रहा है या नहीं.

    • onclick

      अमान्य ज़रूरी नहीं

      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