browser.contextMenus

ब्यौरा

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

अनुमतियां

contextMenus

एपीआई का इस्तेमाल करने के लिए, आपको अपने एक्सटेंशन के मेनिफ़ेस्ट में "contextMenus" अनुमति के बारे में एलान करना होगा. इसके अलावा, आपको मेन्यू आइटम के बगल में दिखाने के लिए, 16x16 पिक्सल का आइकॉन भी देना होगा. उदाहरण के लिए:

{
  "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 या इसके बाद का वर्शन

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

Enum

"all"

"page"

"frame"

"selection"

"link"

"editable"

"image"

"video"

"audio"

"launcher"

"browser_action"

"page_action"

"action"

"tab"

CreateProperties

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

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

प्रॉपर्टी

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

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

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

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

    [ContextType, ...ContextType[]] optional

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

  • documentUrlPatterns

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

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

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

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

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

  • आईडी

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

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

  • parentId

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

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

  • targetUrlPatterns

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

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

  • title

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

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

  • टाइप

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

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

  • दिख रहा है

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

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

  • onclick

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

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

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

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

    • जानकारी

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

    • टैब

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

ItemType

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

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

Enum

"normal"

"checkbox"

"radio"

"separator"

OnClickData

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

प्रॉपर्टी

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

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

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

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

    बूलियन

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

  • frameId

    number ज़रूरी नहीं

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

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

  • frameUrl

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

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

  • linkUrl

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

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

  • mediaType

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

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

  • menuItemId

    string | number

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

  • pageUrl

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

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

  • parentMenuItemId

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

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

  • selectionText

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

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

  • srcUrl

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

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

  • wasChecked

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

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

प्रॉपर्टी

ACTION_MENU_TOP_LEVEL_LIMIT

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

वैल्यू

6

तरीके

create()

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

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

पैरामीटर

  • createProperties
  • कॉलबैक

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

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

    () => void

रिटर्न

  • number | string

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

remove()

chrome.contextMenus.remove(
  menuItemId: string | number,
)
: Promise<void>

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

पैरामीटर

  • menuItemId

    string | number

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

रिटर्न

  • Promise<void>

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

    कॉन्टेक्स्ट मेन्यू हटा दिए जाने पर यह कुकी काम करना बंद कर देती है.

removeAll()

chrome.contextMenus.removeAll(): Promise<void>

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

रिटर्न

  • Promise<void>

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

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

update()

chrome.contextMenus.update(
  id: string | number,
  updateProperties: object,
)
: Promise<void>

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

पैरामीटर

  • आईडी

    string | number

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

  • updateProperties

    ऑब्जेक्ट

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

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

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

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

      [ContextType, ...ContextType[]] optional

    • documentUrlPatterns

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

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

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

    • parentId

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

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

    • targetUrlPatterns

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

    • title

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

    • टाइप

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

    • दिख रहा है

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

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

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

    • onclick

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

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

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

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

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

रिटर्न

  • Promise<void>

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

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

इवेंट

onClicked

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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