مقدمة عن إجراء "تشغيل JavaScript في صفحة ويب" في تطبيق الاختصارات على iPhone أو iPad
يتم برمجة جميع صفحات الويب تقريبًا باستخدام JavaScript، وهي لغة برمجة تنشئ تأثيرات ديناميكية في متصفحات الويب، بما في ذلك الرسوم المتحركة والقوائم التفاعلية وتشغيل الفيديو والمزيد. بوجه عام، لا يتم عرض JavaScript لك أثناء عرض أحد مواقع الويب. ومع ذلك، من خلال إنشاء اختصار يحتوي على إجراء تشغيل JavaScript في صفحة ويب، ثم تشغيل الاختصار من تطبيق Safari، يمكنك التحكم في JavaScript لصفحة الويب.
للاختصارات التي تقوم بتشغيل JavaScript المخصص في صفحة ويب عدد لا يحصى من الاستخدامات. على سبيل المثال، يمكنك إنشاء اختصارات تقوم باسترداد بيانات محددة من صفحة ويب ثم دمج تلك البيانات في مهمة، مثل استخراج جدول فئات ثم إضافته إلى تطبيق التقويم، أو تصدير بيانات العضو في مجموعة وسائط اجتماعية ثم إضافة تلك البيانات إلى جدول بيانات.
يمكنك أيضًا إنشاء اختصارات تتيح لك تعديل صفحة ويب، مثل تغيير خط نص صفحة الويب أو تعديل السرعة التي يتم إعادة تشغيل الفيديو بها. حتى تتمكن من تشغيل JavaScript من الاختصار، يجب عليك تمكين الإعداد. انظر إعدادات الخصوصية والأمن المتقدمة في تطبيق الاختصارات على iPhone أو iPad.
للحصول على معلومات حول استخدام اختصارات تقوم بتشغيل JavaScript في صفحة ويب، انظر استخدام إجراء "تشغيل JavaScript في صفحة ويب" في الاختصارات على iPhone أو iPad.
حول استرداد بيانات صفحة الويب
يتيح لك إجراء تشغيل JavaScript في صفحة ويب إمكانية استرداد البيانات من صفحة ويب عن طريق جلب كل العناصر التي تطابق معايير معينة، ثم تكرار هذه العناصر لتنفيذ مهمة باستخدام البيانات (أو لفحص العناصر بشكل أكبر).
على سبيل المثال، لإنشاء قائمة بكل عنصر صورة في صفحة ويب، استخدم:
var elements = document.querySelectorAll("img");
في مثال آخر، لاسترداد كل عنصر من الفئة "post"، استخدم:
var elements = document.querySelectorAll(".post");
بمجرد إنشاء NodeList، يمكنك تكرار العناصر (لمزيد من تصفية العناصر أو إضافة العناصر إلى بنية بيانات) باستخدام شيء ما مثل:
var elements = ...;
for (let element of elements) {
// ...
}
لمزيد من المعلومات حول الاستعلام عن نتائج صفحة الويب، انظر https://developer.mozilla.org/Selectors وhttps://developer.mozilla.org/SelectorAll.
إدخال إجراء تشغيل JavaScript في صفحة ويب
يجب أن يكون الإدخال الممرر إلى إجراء "تشغيل JavaScript في صفحة ويب" عبارة عن صفحة ويب Safari نشطة، مما يعني أنه يجب عليك تشغيل الاختصار من صفحة المشاركة (خاصةً من Safari أو SFSafariViewController أو ASWebAuthenticationSession).
عند تشغيل اختصار من صفحة المشاركة، يتم تمرير الإدخال من تطبيق Safari إلى الإجراء الأول للاختصار.
على الرغم من أن الإدخال الممرر إلى إجراء تشغيل JavaScript في صفحة ويب يجب أن يكون صفحة ويب Safari، يمكنك إدراج بيانات إضافية في الإجراء باستخدام متغيرات Magic. على سبيل المثال، يحتوي اختصار تغيير سرعة الفيديو (المتوفر في المعرض) على إجراء "تشغيل JavaScript في صفحة ويب" يعمل على تعديل أي فيديو في صفحة الويب. يتم التحكم في سرعة تشغيل الفيديو بواسطة متغير السرعة.
للحصول على معلومات حول تشغيل الاختصارات من Safari، انظر تشغيل اختصار من تطبيق آخر على iPhone أو iPad.
إخراج إجراء تشغيل JavaScript في صفحة ويب
لإرجاع البيانات، يجب استدعاء معالِج الإكمال في JavaScript، مثل completion(result)
. نظرًا لأن JavaScript يتم استخدامه عادةً مع أنماط غير متزامنة، فإن الاستدعاء لا يكون متزامنًا عن قصد. بهذه الطريقة، يمكنك إنهاء الإجراء بشكل غير متزامن. على سبيل المثال، ما يلي يكون صالحًا:
window.setTimeout(function() {
completion(true);
}, 1000);
إخراج إجراء تشغيل JavaScript في صفحة ويب هو أي نوع بيانات JSON صالح، بما في ذلك:
سلسلة
عدد
قيمة منطقية (صواب أو خطأ)
صفيف (يحتوي على أي نوع JSON صالح آخر)
القاموس (يحتوي على أي نوع JSON صالح آخر)
قيمة خالية
غير معرّف
خلف الكواليس، يقوم تطبيق الاختصارات تلقائيًا بترميز وفك ترميز القيمة المرتجعة الخاصة بك للاتصال بين JavaScript وتطبيق الاختصارات. هذا يعني أنك لا تحتاج إلى استدعاء JSON.stringify(result)
قبل استدعاء معالِج الإكمال.
نظرًا لأن قيمة الإرجاع تكون JSON، فإن بعض قيم الإرجاع لن تعمل بشكل جيد. على سبيل المثال، لن تحتوي الدالة أو العقدة على تمثيل مرئي بترميز JSON مفيد. في هذه الحالة، يوصى بإنشاء صفيف/قاموس يحتوي على القيم المتوافقة مع JSON التي تحتاجها.
ملاحظة: نظرًا لأن الكائن في JavaScript هو مجرد قاموس، فإن الكائنات الأساسية يتم تحويلها إلى JSON جيدًا.
إذا كنت لا تريد إرجاع أي بيانات من إجراء تشغيل JavaScript في صفحة ويب، يمكنك استدعاء completion()
بدون أي وسيطة في الدالة (لأن undefined
إخراج صالح). هذا مماثل لاستدعاء completion(undefined)
لمزيد من المعلومات حول JSON، راجع مقدمة عن استخدام JSON في تطبيق الاختصارات على iPhone و iPad.
لمزيد من المعلومات حول العُقد، انظر https://developer.mozilla.org/Node.
لمزيد من المعلومات حول الدوال، انظر https://developer.mozilla.org/Functions.
الحد الزمني لإجراء تشغيل JavaScript في صفحة ويب
مثل جميع ملحقات JavaScript في Safari، يخضع إجراء تشغيل JavaScript في صفحة ويب إلى حد زمني ويجب إكماله بأسرع وقت ممكن. قد لا يكتمل JavaScript الذي يستخدم دوال متزامنة في الإطار الزمني، بما في ذلك:
window.alert()
window.prompt()
window.confirm()
المُهلات التي تستمر لعدة ثوانٍ، على سبيل المثال:
window.setTimeout(function() { completion(); }, 5000);
إذا تجاوز JavaScript الحد الزمني، فسيفشل إكمال الاختصار وستظهر رسالة خطأ انتهاء مهلة JavaScript عند تشغيل الاختصار.
معالجة أخطاء البنية ووقت التشغيل
يمكنك استخدام أي بنية مدعومة في Safari لكتابة JavaScript في إجراء "تشغيل JavaScript في صفحة ويب".
في تطبيق الاختصارات، يساعدك إجراء تشغيل JavaScript في صفحة ويب على اكتشاف الأخطاء عن طريق إجراء فحص أساسي للبنية قبل تشغيل الاختصار من ملحق Safari.
أثناء إدخال البرنامج النصي في حقل النص، يساعد تمييز البنية على التأكد من صلاحية JavaScript. على سبيل المثال، إذا نسيت تضمين علامات اقتباس في نهاية السلسلة، يتم تمييز كل النص الذي يلي هذه السلسلة.
إذا كانت بنية البرنامج النصي صالحة ولكنها تحتوي على خطأ في وقت التشغيل، يقوم إجراء تشغيل JavaScript في صفحة ويب باكتشاف الاستثناءات وعرضها. على سبيل المثال، إذا كان البرنامج النصي يشير إلى متغير أو دالة غير موجودة (مثل shortcuts.completion()
)، يتم عرض خطأ في وقت التشغيل.