chrome.contextMenus

ब्यौरा

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

अनुमतियां

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:// URL शामिल करें. यह नियंत्रित करने के लिए कि आपके आइटम किन दस्तावेज़ों में दिखाए जा सकते हैं, create() या update() तरीकों को कॉल करने पर, documentUrlPatterns फ़ील्ड.

आप जितने चाहें उतने संदर्भ मेन्यू आइटम बना सकते हैं. हालांकि, अगर आपके एक्सटेंशन से एक से ज़्यादा आइटम दिखाई देता है, तो Google Chrome उन्हें अपने आप एक 'माता-पिता' मेन्यू में छोटा कर देता है.

उदाहरण

इस एपीआई को आज़माने के लिए, chrome-extension-samples से contextमेन्यूs एपीआई उदाहरण इंस्टॉल करें डेटा स्टोर करने की जगह.

टाइप

ContextType

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

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

Enum

"सभी"

"पेज"

"फ़्रेम"

"चुनना"

"लिंक"

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

"इमेज"

"वीडियो"

"ऑडियो"

"लॉन्चर"

"browser_action"

"page_action"

"कार्रवाई"

CreateProperties

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

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

प्रॉपर्टी

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

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

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

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

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

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

  • documentUrlPatterns

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

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

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

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

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

  • आईडी

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

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

  • parentId

    string | नंबर वैकल्पिक

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

  • targetUrlPatterns

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

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

  • title

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

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

  • टाइप

    ItemType ज़रूरी नहीं

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

  • दिख रहा है

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

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

  • onclick

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

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

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

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

    • जानकारी

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

    • टैब

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

ItemType

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

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

Enum

"सामान्य"

"चेकबॉक्स"

"रेडियो"

"सेपरेटर"

OnClickData

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

प्रॉपर्टी

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

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

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

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

    बूलियन

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

  • frameId

    नंबर वैकल्पिक

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

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

  • frameUrl

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

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

  • linkUrl

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

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

  • mediaType

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

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

  • menuItemId

    string | नंबर

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

  • pageUrl

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

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

  • parentMenuItemId

    string | नंबर वैकल्पिक

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

  • 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

    string | नंबर

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

  • कॉलबैक

    फ़ंक्शन वैकल्पिक

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

    () => void

रिटर्न

  • प्रॉमिस<void>

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

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

removeAll()

प्रॉमिस
chrome.contextMenus.removeAll(
  callback?: function,
)

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन वैकल्पिक

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

    () => void

रिटर्न

  • प्रॉमिस<void>

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

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

update()

प्रॉमिस
chrome.contextMenus.update(
  id: string | number,
  updateProperties: object,
  callback?: function,
)

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

पैरामीटर

  • आईडी

    string | नंबर

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

  • updateProperties

    ऑब्जेक्ट

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

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

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

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

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

    • documentUrlPatterns

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

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

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

    • parentId

      string | नंबर वैकल्पिक

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

    • targetUrlPatterns

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

    • title

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

    • टाइप

      ItemType ज़रूरी नहीं

    • दिख रहा है

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

      Chrome 62 और उसके बाद वाले वर्शन के लिए

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

    • onclick

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

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

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

      • जानकारी
        Chrome 44 और उसके बाद वाले वर्शन के लिए
      • टैब
        Chrome 44 और उसके बाद वाले वर्शन के लिए

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

  • कॉलबैक

    फ़ंक्शन वैकल्पिक

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

    () => void

रिटर्न

  • प्रॉमिस<void>

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

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

इवेंट

onClicked

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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