browser.commands

বিবরণ

আপনার এক্সটেনশনে অ্যাকশন ট্রিগার করে এমন কীবোর্ড শর্টকাট যোগ করতে কমান্ড API ব্যবহার করুন, যেমন, ব্রাউজার অ্যাকশন খোলার জন্য একটি অ্যাকশন বা এক্সটেনশনে একটি কমান্ড পাঠানো।

ম্যানিফেস্ট

এই API ব্যবহার করতে নিম্নলিখিত কীগুলি ম্যানিফেস্টে ঘোষণা করতে হবে।

"commands"

ধারণা ও ব্যবহার

Commands API এক্সটেনশন ডেভেলপারদের নির্দিষ্ট কমান্ড সংজ্ঞায়িত করতে এবং সেগুলিকে একটি ডিফল্ট কী কম্বিনেশনে বাইন্ড করতে দেয়। এক্সটেনশন গ্রহণ করে এমন প্রতিটি কমান্ডকে অবশ্যই এক্সটেনশনের ম্যানিফেস্ট-এ "commands" অবজেক্টের প্রপার্টি হিসেবে ঘোষণা করতে হবে।

প্রপার্টি কী কমান্ডের নাম হিসেবে ব্যবহার করা হয়। কমান্ড অবজেক্টে দুটি প্রপার্টি থাকতে পারে।

suggested_key

একটি ঐচ্ছিক প্রপার্টি যা কমান্ডের জন্য ডিফল্ট কীবোর্ড শর্টকাট ঘোষণা করে। বাদ দেওয়া হলে, কমান্ডটি আনবাউন্ড হয়ে যাবে। এই প্রপার্টি স্ট্রিং বা অবজেক্ট ভ্যালু নিতে পারে।

  • একটি স্ট্রিং ভ্যালু ডিফল্ট কীবোর্ড শর্টকাট নির্দিষ্ট করে যা সব প্ল্যাটফর্মে ব্যবহার করা উচিত।

    • অবজেক্ট ভ্যালু এক্সটেনশন ডেভেলপারকে প্রতিটি প্ল্যাটফর্মের জন্য কীবোর্ড শর্টকাট কাস্টমাইজ করার অনুমতি দেয়। প্ল্যাটফর্ম-নির্দিষ্ট শর্টকাট প্রদান করার সময়, সঠিক অবজেক্ট প্রপার্টি হল default, chromeos, linux, mac এবং windows।

    আরও তথ্যের জন্য কী কম্বিনেশন সংক্রান্ত প্রয়োজনীয়তা দেখুন।

description
কমান্ডের উদ্দেশ্য সম্পর্কে ব্যবহারকারীকে সংক্ষিপ্ত বিবরণ দেওয়ার জন্য ব্যবহৃত স্ট্রিং। এই স্ট্রিং এক্সটেনশন কীবোর্ড শর্টকাট ম্যানেজমেন্ট UI-তে দেখা যায়। স্ট্যান্ডার্ড কমান্ডের জন্য বিবরণ দিতে হবে, তবে অ্যাকশন কমান্ড-এর জন্য বিবরণ দিতে হবে না।

একটি এক্সটেনশনে অনেক কমান্ড থাকতে পারে, তবে সর্বাধিক চারটি সাজেস্ট করা কীবোর্ড শর্টকাট নির্দিষ্ট করতে পারে। ব্যবহারকারী ম্যানুয়ালি আরও শর্টকাট যোগ করতে পারবেন 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, Shift, MacCtrl (শুধুমাত্র macOS), Option (শুধুমাত্র macOS), Command (শুধুমাত্র macOS), Search (শুধুমাত্র ChromeOS)

'কী' কম্বিনেশন সংক্রান্ত প্রয়োজনীয়তা

  • এক্সটেনশন কমান্ড শর্টকাটে অবশ্যই Ctrl বা Alt অন্তর্ভুক্ত থাকতে হবে।

    • মিডিয়া 'কী'-এর সাথে মডিফায়ার ব্যবহার করা যাবে না।

    • অনেক macOS কীবোর্ডে, Alt বলতে বিকল্প কী বোঝায়।

    • macOS-এ, Ctrl-এর পরিবর্তে Command বা MacCtrl ব্যবহার করা যেতে পারে, এবং Alt-এর পরিবর্তে Option কী ব্যবহার করা যেতে পারে (পরবর্তী বুলেট পয়েন্ট দেখুন)।

  • macOS-এ Ctrl অটোমেটিক 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:

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

অ্যাকশন কমান্ড

_execute_action (Manifest V3), _execute_browser_action (Manifest V2) এবং _execute_page_action (Manifest V2) কমান্ডগুলি যথাক্রমে আপনার অ্যাকশন, ব্রাউজার অ্যাকশন বা পৃষ্ঠা অ্যাকশন ট্রিগার করার জন্য সংরক্ষিত। এইসব কমান্ড স্ট্যান্ডার্ড কমান্ডের মতো command.onCommand ইভেন্ট ডিসপ্যাচ করে না।

আপনার পপ-আপ খোলার উপর ভিত্তি করে আপনাকে কোনও অ্যাকশন নিতে হলে, আপনার পপ-আপের JavaScript-এর মধ্যে DOMContentLoaded ইভেন্ট শোনার কথা বিবেচনা করুন।

সুযোগ

ডিফল্ট হিসেবে, Chrome ব্রাউজারে কমান্ডের স্কোপ সীমাবদ্ধ থাকে। এর অর্থ হল, ব্রাউজার ফোকাসে না থাকলে, কমান্ড শর্টকাট কাজ করে না। Chrome 35 থেকে শুরু করে, এক্সটেনশন ডেভেলপাররা ঐচ্ছিকভাবে কোনও কমান্ডকে "গ্লোবাল" হিসেবে চিহ্নিত করতে পারেন। Chrome-এ ফোকাস না থাকলেও গ্লোবাল কমান্ড কাজ করে।

গ্লোবাল কমান্ডের জন্য কীবোর্ড শর্টকাট সাজেশন Ctrl+Shift+[0..9]-এর মধ্যে সীমিত। এটি একটি সুরক্ষামূলক ব্যবস্থা যাতে অন্যান্য অ্যাপ্লিকেশনে শর্টকাট ওভাররাইড করার ঝুঁকি কমানো যায়, কারণ, উদাহরণস্বরূপ, Alt+P-কে গ্লোবাল হিসেবে অনুমতি দেওয়া হলে, প্রিন্ট ডায়ালগ খোলার জন্য কীবোর্ড শর্টকাট অন্যান্য অ্যাপ্লিকেশনে কাজ নাও করতে পারে।

chrome://extensions/shortcuts-এ দেখানো UI ব্যবহার করে ব্যবহারকারীরা গ্লোবাল কমান্ডকে তাদের পছন্দের কী কম্বিনেশনে রিম্যাপ করতে পারবেন।

উদাহরণ:

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:

browser.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:

browser.action.onClicked.addListener((tab) => {
  browser.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"
browser.commands.onCommand.addListener((command) => {
  console.log(`Command "${command}" called`);
});

রেজিস্টার করা কমান্ড যাচাই করা

কোনও এক্সটেনশন যদি এমন কোনও শর্টকাট রেজিস্টার করার চেষ্টা করে যা অন্য কোনও এক্সটেনশন আগে থেকেই ব্যবহার করছে, তাহলে দ্বিতীয় এক্সটেনশনের শর্টকাট প্রত্যাশা অনুযায়ী রেজিস্টার হবে না। আপনি এই সম্ভাবনা অনুমান করে এবং ইনস্টল করার সময় সংঘর্ষ চেক করে ব্যবহারকারীকে আরও ভালো অভিজ্ঞতা প্রদান করতে পারেন।

service-worker.js:

browser.runtime.onInstalled.addListener((details) => {
  if (details.reason === browser.runtime.OnInstalledReason.INSTALL) {
    checkCommandShortcuts();
  }
});

// Only use this function during the initial install phase. After
// installation the user may have intentionally unassigned commands.
function checkCommandShortcuts() {
  browser.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()

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

এই এক্সটেনশনের জন্য রেজিস্টার করা সব এক্সটেনশন কমান্ড এবং তাদের শর্টকাট (অ্যাক্টিভ থাকলে) ফিরিয়ে দেয়। Chrome 110-এর আগে, এই কমান্ড _execute_action ফিরিয়ে দেয়নি।

রিটার্ন

  • Promise<Command[]>

    Chrome 96+ Chrome 148 থেকে browser.*

    রেজিস্টার করা কমান্ডের তালিকা সহ সমাধান করে।

ইভেন্ট

onCommand

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

কীবোর্ড শর্টকাট ব্যবহার করে রেজিস্টার করা কমান্ড অ্যাক্টিভেট করা হলে ফায়ার করা হয়।

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

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

    • কমান্ড

      স্ট্রিং

    • ট্যাব

      tabs.Tab ঐচ্ছিক