الوصف
استخدِم واجهة برمجة تطبيقات الأوامر لإضافة اختصارات لوحة المفاتيح التي تؤدي إلى تنفيذ الإجراءات في إضافتك، مثل إجراء لفتح إجراء المتصفّح أو إرسال أمر إلى الإضافة.
البيان
يجب الإعلان عن المفاتيح التالية في ملف البيان كي تتمكّن من استخدام واجهة برمجة التطبيقات هذه.
"commands"
الاستخدام
تسمح واجهة برمجة التطبيقات Commands لمطوّري الإضافات بتحديد أوامر محدّدة وربطها بمجموعة مفاتيح تلقائية. يجب الإشارة إلى كل أمر تقبله الإضافة كسمات لكائن "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
(Option
على نظام التشغيل macOS) وShift
وMacCtrl
(نظام التشغيل macOS فقط) وCommand
(نظام التشغيل macOS فقط) وSearch
(نظام التشغيل ChromeOS فقط)
متطلبات مجموعة المفاتيح
يجب أن تتضمّن اختصارات أوامر الإضافات
Ctrl
أوAlt
.- لا يمكن استخدام المعدِّلات مع مفاتيح الوسائط.
على نظام التشغيل macOS، يتم تحويل
Ctrl
تلقائيًا إلىCommand
.لاستخدام مفتاح Control على نظام التشغيل macOS، عليك استبدال
Ctrl
بـMacCtrl
عند تحديد الاختصار"mac"
.سيؤدي استخدام الإضافة
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-work.js:
chrome.commands.onCommand.addListener((command) => {
console.log(`Command: ${command}`);
});
أوامر الإجراءات
إنّ الأوامر _execute_action
(الإصدار 3 من ملف البيان) و_execute_browser_action
(الإصدار 2 من ملف البيان)
و_execute_page_action
(الإصدار 2 من ملف البيان) محجوزة لإجراء تشغيل الإجراء أو إجراء المتصفّح أو إجراء الصفحة على التوالي. ولا ترسل هذه الأوامر أحداث
command.onCommand مثل الأوامر العادية.
إذا كنت بحاجة إلى اتّخاذ أي إجراء بناءً على فتح النافذة المنبثقة، ننصحك بالاستماع إلى حدث DOMContentLoaded داخل JavaScript للنافذة المنبثقة.
النطاق
يتم تلقائيًا تحديد نطاق الأوامر في متصفّح 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-work.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-work.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-work.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,
)
عرض جميع أوامر الإضافات المسجَّلة لهذه الإضافة واختصارها (إذا كان نشطًا). قبل استخدام Chrome 110، لم يكن هذا الأمر يؤدي إلى عرض الخطأ _execute_action
.
المَعلمات
المرتجعات
-
الوعد<Command[]>
Chrome 96 والإصدارات الأحدثلا تتوفّر الوعود إلا في الإصدار 3 من Manifest V3 والإصدارات الأحدث، وتحتاج الأنظمة الأساسية الأخرى إلى استخدام عمليات معاودة الاتصال.