বর্ণনা
আপনার এক্সটেনশনে অ্যাকশন ট্রিগার করে এমন কীবোর্ড শর্টকাট যোগ করতে কমান্ড 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),Command
(শুধুমাত্র macOS),Search
(শুধুমাত্র ChromeOS)
মূল সমন্বয় প্রয়োজনীয়তা
এক্সটেনশন কমান্ড শর্টকাট অবশ্যই
Ctrl
বাAlt
অন্তর্ভুক্ত করতে হবে।মিডিয়া কীগুলির সাথে সংশোধকগুলি ব্যবহার করা যাবে না ৷
অনেক macOS কীবোর্ডে,
Alt
বিকল্প কী বোঝায়।MacOS-এ
Ctrl
বাAlt
এর জায়গায়Command
বাMacCtrl
ব্যবহার করা যেতে পারে (পরবর্তী বুলেট পয়েন্ট দেখুন)।
MacOS-এ
Ctrl
স্বয়ংক্রিয়ভাবেCommand
রূপান্তরিত হয়।কমান্ড কী স্পষ্টভাবে উল্লেখ করতে
"mac"
শর্টকাটেওCommand
ব্যবহার করা যেতে পারে।macOS-এ কন্ট্রোল কী ব্যবহার করতে,
"mac"
শর্টকাট সংজ্ঞায়িত করার সময়MacCtrl
দিয়েCtrl
প্রতিস্থাপন করুন।অন্য প্ল্যাটফর্মের সংমিশ্রণে
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 ইভেন্ট শোনার কথা বিবেচনা করুন৷
ব্যাপ্তি
ডিফল্টরূপে, কমান্ডগুলি Chrome ব্রাউজারে স্কোপ করা হয়। এর মানে হল যখন ব্রাউজারে ফোকাস থাকে না, তখন কমান্ড শর্টকাট নিষ্ক্রিয় থাকে। Chrome 35 থেকে শুরু করে, এক্সটেনশন ডেভেলপাররা ঐচ্ছিকভাবে একটি কমান্ডকে "গ্লোবাল" হিসেবে চিহ্নিত করতে পারে। ক্রোমের ফোকাস না থাকলে গ্লোবাল কমান্ডগুলিও কাজ করে।
গ্লোবাল কমান্ডের জন্য কীবোর্ড শর্টকাট পরামর্শ 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
}
},
...
}
উদাহরণ
নিম্নলিখিত উদাহরণ কমান্ড 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
বৈশিষ্ট্য
- বর্ণনা
স্ট্রিং ঐচ্ছিক
এক্সটেনশন কমান্ডের বিবরণ
- নাম
স্ট্রিং ঐচ্ছিক
এক্সটেনশন কমান্ডের নাম
- শর্টকাট
স্ট্রিং ঐচ্ছিক
এই কমান্ডের জন্য সক্রিয় শর্টকাট, অথবা সক্রিয় না হলে ফাঁকা।
পদ্ধতি
getAll()
chrome.commands.getAll(
callback?: function,
)
এই এক্সটেনশনের জন্য সমস্ত নিবন্ধিত এক্সটেনশন কমান্ড এবং তাদের শর্টকাট (যদি সক্রিয়) প্রদান করে। Chrome 110 এর আগে, এই কমান্ডটি _execute_action
ফেরত দেয়নি।
পরামিতি
রিটার্নস
প্রতিশ্রুতি< কমান্ড []>
Chrome 96+প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।
ঘটনা
onCommand
chrome.commands.onCommand.addListener(
callback: function,
)
একটি কীবোর্ড শর্টকাট ব্যবহার করে একটি নিবন্ধিত কমান্ড সক্রিয় করা হলে বহিস্কার করা হয়।
পরামিতি
- কলব্যাক
ফাংশন
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:(command: string, tab?: tabs.Tab) => void
- আদেশ
স্ট্রিং
- ট্যাব
ট্যাব। ট্যাব ঐচ্ছিক