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-samples रिपॉज़िटरी से contextMenus API का उदाहरण इंस्टॉल करें.

टाइप

ContextType

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

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

Enum

"all"

"page"

"frame"

"selection"

"link"

"editable"

"image"

"video"

"audio"

"launcher"

"browser_action"

"page_action"

"action"

CreateProperties

Chrome 123+

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

प्रॉपर्टी

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

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

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

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

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

Enum

"normal"

"checkbox"

"radio"

"separator"

OnClickData

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

प्रॉपर्टी

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

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

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

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

    बूलियन

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

  • frameId

    number ज़रूरी नहीं

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

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

  • frameUrl

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

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

  • linkUrl

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

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

  • mediaType

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

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

  • menuItemId

    स्ट्रिंग | संख्या

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

  • 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,
)

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

पैरामीटर

  • menuItemId

    स्ट्रिंग | संख्या

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

  • कॉलबैक

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

    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