تتيح لك ميزة "معالجة الملفات" ضبط نظام التشغيل ChromeOS لكي تتمكن الإضافة من فتح الملفات باستخدام القائمة "فتح" لقائمة الملفات أو قائمة "فتح باستخدام" لقائمة السياقات. بعد فتحه، يمكنك معالجة بيانات الملف باستخدام Launch Handler API في النظام الأساسي للويب. ستستخدم بعد ذلك واجهات برمجة التطبيقات العادية للنظام الأساسي للويب لعرض الملف أو معالجته.
![تمت إضافة معالج ملف إلى القائمة "فتح" في نظام التشغيل ChromeOS.](https://developer.chrome.com/static/docs/extensions/how-to/web-platform/file-handling-chromeos/image/a-file-handler-added-the-4899ab22819fc.png?authuser=6&hl=ar)
مدى التوفّر في الإضافات
الإصدار 120 من نظام التشغيل ChromeOS أو إصدار أحدث
الأذونات
لا يُشترط الحصول على أذونات لمعالجة الملفات.
البيان
تحتاج إلى إضافة المصفوفة "file_handlers"
إلى ملفManifest.json.
سياقات داعمة
يمكن استخدام واجهة برمجة التطبيقات هذه في مشغِّلات خدمات الإضافات أو النوافذ المنبثقة أو اللوحات الجانبية أو النصوص البرمجية للمحتوى.
إعداد معالج ملفات
يحدّد كل عضو في "file_handlers"
، أي كل معالج ملفات، نوع ملف أو أنواعه التي ستتم معالجتها من خلال صفحة إضافة معيّنة.
ستتم إضافة المعالِجات التي تحدِّدها إلى نافذة "الملفات" في نظام التشغيل ChromeOS، وهي القائمة "فتح" و"فتح باستخدام القوائم" على وجه التحديد. وستظهر فقط في هذه القوائم عندما يحدد المستخدم ملفًا بامتداد معين. على سبيل المثال، إذا حدّد معالِج ملفات .txt
، لن تعرض قوائم نظام التشغيل ChromeOS هذا المعالج إلا عند اختيار ملف بهذه الإضافة.
معالجة ملف
معالج الملف هو ملف HTML مضمَّن في إضافتك. عندما يختار المستخدم المعالج من قائمة، يتم فتح ملف HTML في علامة تبويب جديدة. تتم معالجة الملف، سواء عرضته أو تستخدمه بطريقة أخرى، باستخدام JavaScript باستخدام واجهات برمجة تطبيقات النظام الأساسي المناسبة على الويب. يجب وضع رمز المعالجة في ملف JavaScript منفصل وتضمينه في علامة <script>
، ويجب أيضًا إدراجه في إضافتك. يستخدم ملف النص البرمجي واجهة LaunchQueue
لواجهة Launch Handler API للحصول على كائن FileSystemFileHandle
.
مثال
يوضّح المثال التالي كيفية الحصول على عنصر FileSystemFileHandle
باستخدام واجهة LaunchQueue
. للاطِّلاع على طريقة التعامل مع الملفات، ثبِّت العرض التوضيحي لمعالجة الملفات.
if ('launchQueue' in window) {
launchQueue.setConsumer(async launchParams => {
if (!launchParams.files || !launchParams.files.length) { return; }
const fileHandle = launchParams.files[0];
});
}
``````