chrome.commands

ब्यौरा

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

मेनिफ़ेस्ट

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

"commands"

सिद्धांत और उनका इस्तेमाल

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

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

suggested_key

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

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

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

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

description

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

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

काम करने वाली कुंजियां

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

ऐल्फ़ा कुंजियां
A ... Z
अंकों वाली कुंजियां
0 ... 9
स्टैंडर्ड कुंजी स्ट्रिंग

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

ऐरो बटन–Up, Down, Left, Right

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

संशोधक कुंजी स्ट्रिंग

Ctrl, Alt (macOS पर Option), Shift, MacCtrl (सिर्फ़ macOS के लिए), Command (सिर्फ़ macOS के लिए), Search (सिर्फ़ ChromeOS पर)

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

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

    • मीडिया कुंजियों के साथ मॉडिफ़ायर का इस्तेमाल नहीं किया जा सकता.
  • macOS पर Ctrl, अपने-आप 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 (मेनिफ़ेस्ट वर्शन 2) के निर्देश आपकी कार्रवाई को ट्रिगर करने के लिए रिज़र्व हैं, ब्राउज़र कार्रवाई या पेज कार्रवाई. ये निर्देश भेजे नहीं जाते 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`);
});

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

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

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

प्रॉपर्टी

  • ब्यौरा

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

    एक्सटेंशन निर्देश की जानकारी

  • नाम

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

    एक्सटेंशन निर्देश का नाम

  • शॉर्टकट

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

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

तरीके

getAll()

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

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

पैरामीटर

  • कॉलबैक

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

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

    (commands: Command[]) => void

रिटर्न

  • वादा करना<Command[]>

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

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

इवेंट

onCommand

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

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

    • निर्देश

      स्ट्रिंग

    • टैब

      tabs.Tab ज़रूरी नहीं