রিফ্রেশ তারিখ: ২০২৬-০৯-২৫ রোবটস: নোইনডেক্স
বর্ণনা
আপনার এক্সটেনশনে বিভিন্ন অ্যাকশন চালু করার জন্য কিবোর্ড শর্টকাট যোগ করতে কমান্ডস এপিআই (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(macOS-এOption),Shift,MacCtrl(শুধুমাত্র macOS-এর জন্য),Command(শুধুমাত্র macOS-এর জন্য),Search(শুধুমাত্র ChromeOS-এর জন্য)
মূল সমন্বয়ের প্রয়োজনীয়তা
এক্সটেনশন কমান্ড শর্টকাটগুলোতে অবশ্যই
CtrlঅথবাAltঅন্তর্ভুক্ত থাকতে হবে।- মডিফায়ারসমূহ মিডিয়া কী-এর সাথে একত্রে ব্যবহার করা যায় না ।
macOS-এ
Ctrlস্বয়ংক্রিয়ভাবেCommandএ রূপান্তরিত হয়।macOS-এ কন্ট্রোল কী ব্যবহার করতে,
"mac"শর্টকাট নির্ধারণ করার সময়Ctrlএর পরিবর্তেMacCtrlব্যবহার করুন।অন্য কোনো প্ল্যাটফর্মের জন্য নির্ধারিত সংমিশ্রণে
MacCtrlব্যবহার করলে একটি বৈধতা ত্রুটি দেখা দেবে এবং এক্সটেনশনটি ইনস্টল হতে বাধা দেবে।
Shiftসকল প্ল্যাটফর্মে একটি ঐচ্ছিক মডিফায়ার।Searchহলো একটি ঐচ্ছিক মডিফায়ার যা শুধুমাত্র ChromeOS-এ পাওয়া যায়।কিছু নির্দিষ্ট অপারেটিং সিস্টেম এবং ক্রোম শর্টকাট (যেমন উইন্ডো ম্যানেজমেন্ট) এক্সটেনশন কমান্ড শর্টকাটের চেয়ে সর্বদা অগ্রাধিকার পায় এবং এগুলো ওভাররাইট করা যায় না।
কমান্ড ইভেন্ট পরিচালনা করা
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 (Manifest V3), _execute_browser_action (Manifest V2), এবং _execute_page_action (Manifest V2) কমান্ডগুলো যথাক্রমে আপনার অ্যাকশন, ব্রাউজার অ্যাকশন, বা পেজ অ্যাকশন ট্রিগার করার জন্য সংরক্ষিত। এই কমান্ডগুলো সাধারণ কমান্ডের মতো command.onCommand ইভেন্ট ডিসপ্যাচ করে না।
আপনার পপআপ খোলার উপর ভিত্তি করে যদি কোনো ব্যবস্থা নেওয়ার প্রয়োজন হয়, তাহলে আপনার পপআপের জাভাস্ক্রিপ্টের মধ্যে একটি DOMContentLoaded ইভেন্ট শোনার কথা বিবেচনা করতে পারেন।
পরিধি
ডিফল্টরূপে, কমান্ডগুলো ক্রোম ব্রাউজারের মধ্যেই সীমাবদ্ধ থাকে। এর মানে হলো, যখন ব্রাউজারে ফোকাস থাকে না, তখন কমান্ড শর্টকাটগুলো নিষ্ক্রিয় থাকে। ক্রোম ৩৫ থেকে শুরু করে, এক্সটেনশন ডেভেলপাররা ঐচ্ছিকভাবে একটি কমান্ডকে "গ্লোবাল" হিসেবে চিহ্নিত করতে পারেন। ক্রোমে ফোকাস না থাকলেও গ্লোবাল কমান্ডগুলো কাজ করে।
গ্লোবাল কমান্ডের জন্য কীবোর্ড শর্টকাট সাজেশন 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:
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((reason) => {
if (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,
): Promise<Command[]>
এই এক্সটেনশনের জন্য নিবন্ধিত সমস্ত এক্সটেনশন কমান্ড এবং তাদের শর্টকাট (যদি সক্রিয় থাকে) ফেরত দেয়। ক্রোম ১১০-এর আগে, এই কমান্ডটি _execute_action ফেরত দিত না।
প্যারামিটার
ফেরত
প্রতিশ্রুতি< কমান্ড []>
ক্রোম ৯৬+নিবন্ধিত কমান্ডগুলোর একটি তালিকা দিয়ে সমাধান করে।
প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
ইভেন্টগুলি
onCommand
chrome.commands.onCommand.addListener(
callback: function,
)
কিবোর্ড শর্টকাট ব্যবহার করে কোনো নিবন্ধিত কমান্ড সক্রিয় করা হলে এটি চালু হয়।
প্যারামিটার
- কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(command: string, tab?: tabs.Tab) => void
- আদেশ
স্ট্রিং
- ট্যাব
ট্যাব। ট্যাব ঐচ্ছিক