chrome.commands

ब्यौरा

अपने एक्सटेंशन में कीबोर्ड शॉर्टकट जोड़ने के लिए, Commands API का इस्तेमाल करें. इससे एक्सटेंशन में कार्रवाइयां ट्रिगर होती हैं. उदाहरण के लिए, ब्राउज़र ऐक्शन खोलने या एक्सटेंशन को कोई निर्देश भेजने की कार्रवाई.

मेनिफ़ेस्ट

इस एपीआई का इस्तेमाल करने के लिए, इन कुंजियों को मेनिफ़ेस्ट फ़ाइल में एलान करना होगा.

"commands"

कॉन्सेप्ट और इस्तेमाल

Commands API की मदद से, एक्सटेंशन डेवलपर कुछ खास कमांड तय कर सकते हैं. साथ ही, उन्हें डिफ़ॉल्ट कीबोर्ड शॉर्टकट के साथ बाइंड कर सकते हैं. एक्सटेंशन जिस भी कमांड को स्वीकार करता है उसे एक्सटेंशन के मेनिफ़ेस्ट में, "commands" ऑब्जेक्ट की प्रॉपर्टी के तौर पर एलान किया जाना चाहिए.

प्रॉपर्टी की का इस्तेमाल, कमांड के नाम के तौर पर किया जाता है. कमांड ऑब्जेक्ट में दो प्रॉपर्टी हो सकती हैं.

suggested_key

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

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

  • ऑब्जेक्ट वैल्यू की मदद से, एक्सटेंशन डेवलपर हर प्लैटफ़ॉर्म के लिए कीबोर्ड शॉर्टकट को पसंद के मुताबिक बना सकता है. प्लैटफ़ॉर्म के हिसाब से शॉर्टकट उपलब्ध कराते समय, ऑब्जेक्ट की मान्य प्रॉपर्टी ये हैं: default, chromeos, linux, mac, और windows.

ज़्यादा जानकारी के लिए, कुंजी के कॉम्बिनेशन से जुड़ी ज़रूरी शर्तें देखें.

description

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

किसी एक्सटेंशन में कई कमांड हो सकती हैं. हालांकि, वह ज़्यादा से ज़्यादा चार सुझाए गए कीबोर्ड शॉर्टकट तय कर सकता है. उपयोगकर्ता, chrome://extensions/shortcuts डायलॉग बॉक्स से मैन्युअल तरीके से ज़्यादा शॉर्टकट जोड़ सकता है.

इस्तेमाल की जा सकने वाली कुंजियां

यहां दिए गए कीबोर्ड शॉर्टकट का इस्तेमाल किया जा सकता है. कुंजी की परिभाषाएं केस-सेंसिटिव होती हैं. गलत केस वाली कुंजी के साथ एक्सटेंशन लोड करने की कोशिश करने पर, इंस्टॉल करने के समय मेनिफ़ेस्ट पार्स करने में गड़बड़ी होगी.

ऐल्फ़ा कुंजियां
AZ
नंबर वाले बटन
09
स्टैंडर्ड की स्ट्रिंग

सामान्य–Comma, Period, Home, End, PageUp, PageDown, Space, Insert, Delete

ऐरो की–Up, Down, Left, Right

मीडिया की–MediaNextTrack, MediaPlayPause, MediaPrevTrack, MediaStop

कार्रवाई बदलने वाली कुंजियों की स्ट्रिंग

Ctrl, Alt, Shift, MacCtrl (सिर्फ़ macOS), Command (सिर्फ़ macOS), Search (सिर्फ़ ChromeOS)

बटन के कॉम्बिनेशन से जुड़ी ज़रूरी शर्तें

  • एक्सटेंशन कमांड के शॉर्टकट में, Ctrl या Alt में से कोई एक शामिल होना चाहिए.

    • मॉडिफ़ायर का इस्तेमाल, मीडिया कुंजियों के साथ नहीं किया जा सकता.

    • macOS के कई कीबोर्ड पर, Alt का मतलब Option बटन होता है.

    • macOS पर, Ctrl या Alt के बजाय Command या MacCtrl का भी इस्तेमाल किया जा सकता है (अगला बुलेट पॉइंट देखें).

  • macOS पर Ctrl अपने-आप Command में बदल जाता है.

    • Command का इस्तेमाल "mac" शॉर्टकट में भी किया जा सकता है, ताकि Command बटन को साफ़ तौर पर दिखाया जा सके.

    • macOS पर Control बटन का इस्तेमाल करने के लिए, "mac" शॉर्टकट तय करते समय Ctrl को MacCtrl से बदलें.

    • किसी दूसरे प्लैटफ़ॉर्म के लिए MacCtrl का इस्तेमाल करने पर, पुष्टि करने से जुड़ी गड़बड़ी होगी. साथ ही, एक्सटेंशन इंस्टॉल नहीं किया जा सकेगा.

  • Shift सभी प्लैटफ़ॉर्म पर एक ज़रूरी नहीं है.

  • Search एक वैकल्पिक मॉडिफ़ायर है, जो सिर्फ़ ChromeOS के लिए उपलब्ध है.

  • कुछ ऑपरेटिंग सिस्टम और Chrome के शॉर्टकट (जैसे, विंडो मैनेजमेंट) को हमेशा एक्सटेंशन कमांड के शॉर्टकट से ज़्यादा प्राथमिकता दी जाती है. इन्हें बदला नहीं जा सकता.

कमांड इवेंट मैनेज करना

manifest.json:

{   "name": "My extension",   ...   "commands": {     "run-foo": {       "suggested_key": {         "default": "Ctrl+Shift+Y",         "mac": "Command+Shift+Y"       },       "description": "Run \"foo\" on the current page."     },     "_execute_action": {       "suggested_key": {         "windows": "Ctrl+Shift+Y",         "mac": "Command+Shift+Y",         "chromeos": "Ctrl+Shift+U",         "linux": "Ctrl+Shift+J"       }     }   },   ... } 

अपने सर्विस वर्कर में, मेनिफ़ेस्ट में तय की गई हर कमांड के लिए, onCommand.addListener का इस्तेमाल करके एक हैंडलर बाइंड किया जा सकता है. उदाहरण के लिए:

service-worker.js:

chrome.commands.onCommand.addListener((command) => {   console.log(`Command: ${command}`); }); 

कार्रवाई करने के लिए निर्देश

_execute_action (मेनिफ़ेस्ट V3), _execute_browser_action (मेनिफ़ेस्ट V2), और _execute_page_action (मेनिफ़ेस्ट V2) कमांड, क्रमशः ऐक्शन ट्रिगर करने, ब्राउज़र ऐक्शन या पेज ऐक्शन के लिए रिज़र्व की गई हैं. ये कमांड, स्टैंडर्ड कमांड की तरह command.onCommand इवेंट डिसपैच नहीं करती हैं.

अगर आपको पॉप-अप खुलने के आधार पर कोई कार्रवाई करनी है, तो पॉप-अप की JavaScript में DOMContentLoaded इवेंट को सुनें.

दायरा

डिफ़ॉल्ट रूप से, कमांड को Chrome ब्राउज़र के लिए स्कोप किया जाता है. इसका मतलब है कि जब ब्राउज़र पर फ़ोकस नहीं होता है, तब कमांड शॉर्टकट काम नहीं करते. Chrome 35 से, एक्सटेंशन डेवलपर के पास किसी निर्देश को "ग्लोबल" के तौर पर मार्क करने का विकल्प होता है. Chrome पर फ़ोकस न होने पर भी, ग्लोबल कमांड काम करती हैं.

ग्लोबल कमांड के लिए कीबोर्ड शॉर्टकट के सुझाव, सिर्फ़ Ctrl+Shift+[0..9] तक सीमित हैं. यह एक सुरक्षात्मक उपाय है, ताकि अन्य ऐप्लिकेशन में शॉर्टकट को बदलने के जोखिम को कम किया जा सके. उदाहरण के लिए, अगर Alt+P को ग्लोबल के तौर पर इस्तेमाल करने की अनुमति दी जाती है, तो हो सकता है कि प्रिंट डायलॉग खोलने के लिए कीबोर्ड शॉर्टकट, अन्य ऐप्लिकेशन में काम न करे.

असली उपयोगकर्ता, chrome://extensions/shortcuts पर मौजूद यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल करके, ग्लोबल कमांड को अपनी पसंद के की कॉम्बिनेशन पर रीमैप कर सकते हैं.

उदाहरण:

manifest.json:

{   "name": "My extension",   ...   "commands": {     "toggle-feature-foo": {       "suggested_key": {         "default": "Ctrl+Shift+5"       },       "description": "Toggle feature foo",       "global": true     }   },   ... } 

उदाहरण

यहां दिए गए उदाहरणों में, Commands API के मुख्य फ़ंक्शन के बारे में बताया गया है.

बुनियादी निर्देश

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

manifest.json:

{   "name": "Command demo - basic",   "version": "1.0",   "manifest_version": 3,   "background": {     "service_worker": "service-worker.js"   },   "commands": {     "inject-script": {       "suggested_key": "Ctrl+Shift+Y",       "description": "Inject a script on the page"     }   } } 

service-worker.js:

chrome.commands.onCommand.addListener((command) => {   console.log(`Command "${command}" triggered`); }); 

कार्रवाई करने का निर्देश

कॉन्सेप्ट और इस्तेमाल सेक्शन में बताए गए तरीके से, किसी कमांड को एक्सटेंशन की कार्रवाई से भी मैप किया जा सकता है. यहां दिए गए उदाहरण में, एक कॉन्टेंट स्क्रिप्ट डाली गई है. इससे उपयोगकर्ता के एक्सटेंशन की कार्रवाई पर क्लिक करने या कीबोर्ड शॉर्टकट ट्रिगर करने पर, मौजूदा पेज पर एक सूचना दिखती है.

manifest.json:

{   "name": "Commands demo - action invocation",   "version": "1.0",   "manifest_version": 3,   "background": {     "service_worker": "service-worker.js"   },   "permissions": ["activeTab", "scripting"],   "action": {},   "commands": {     "_execute_action": {       "suggested_key": {         "default": "Ctrl+U",         "mac": "Command+U"       }     }   } } 

service-worker.js:

chrome.action.onClicked.addListener((tab) => {   chrome.scripting.executeScript({     target: {tabId: tab.id},     func: contentScriptFunc,     args: ['action'],   }); });  function contentScriptFunc(name) {   alert(`"${name}" executed`); }  // This callback WILL NOT be called for "_execute_action" chrome.commands.onCommand.addListener((command) => {   console.log(`Command "${command}" called`); }); 

रजिस्टर की गई कमांड की पुष्टि करना

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

service-worker.js:

chrome.runtime.onInstalled.addListener((details) => {   if (details.reason === chrome.runtime.OnInstalledReason.INSTALL) {     checkCommandShortcuts();   } });  // Only use this function during the initial install phase. After // installation the user may have intentionally unassigned commands. function checkCommandShortcuts() {   chrome.commands.getAll((commands) => {     let missingShortcuts = [];      for (let {name, shortcut} of commands) {       if (shortcut === '') {         missingShortcuts.push(name);       }     }      if (missingShortcuts.length > 0) {       // Update the extension UI to inform the user that one or more       // commands are currently unassigned.     }   }); } 

टाइप

Command

प्रॉपर्टी

  • ब्यौरा

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

    एक्सटेंशन कमांड का ब्यौरा

  • नाम

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

    एक्सटेंशन कमांड का नाम

  • शॉर्टकट

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

    इस निर्देश के लिए चालू किया गया शॉर्टकट या अगर चालू नहीं है, तो खाली.

तरीके

getAll()

chrome.commands.getAll(): Promise<Command[]>

यह एक्सटेंशन के लिए रजिस्टर की गई सभी एक्सटेंशन कमांड और उनके शॉर्टकट (अगर चालू हैं) दिखाता है. Chrome 110 से पहले, इस कमांड से _execute_action नहीं मिलता था.

रिटर्न

  • Promise<Command[]>

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

इवेंट

onCommand

chrome.commands.onCommand.addListener(
  callback: function,
)

यह इवेंट तब ट्रिगर होता है, जब कीबोर्ड शॉर्टकट का इस्तेमाल करके रजिस्टर किए गए किसी निर्देश को चालू किया जाता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (command: string, tab?: tabs.Tab) => void

    • निर्देश

      स्ट्रिंग

    • टैब

      tabs.Tab optional