
_START_ARTICLE_
جافا سكربت-جهة المستخدم
_START_PARAGRAPH_
جافا سكريبت-جهة المستخدم (CSJS) :هي عباره عن برمجة بلغة الجافا سكريبت التي تعمل على جهة المستخدم(جهاز المستخدم). وفي حين ان لغة الجافا سكريبت تم إنشاؤاها أصلا للعمل على (جهة المستخدم)، إلا أن هذا المصطلح قد برز لأن اللغة لم تعد تقتصر على مجرد جهة المستخدم فعلى سبيل المثال توجد لغة الجافا سكريبت - جهة الخادم (SSJS) أيضا.
_START_SECTION_
بيئة (جافا سكربت-جهة المستخدم)
_START_PARAGRAPH_
(application/javascript)الصيغه السابقة هي نوع من أنواع الإعلان بالإنترنت لكود المصدر لجافا سكريبت التي تم تسجيلها في عام 2006 لكن هذا النوع غير معتمد من قبل جميع المتصفحات الرئيسية. فعلى سبيل المثال إنترنت إكسبلورر (بما في ذلك النسخة من 6 إلى 8) يتجاهل النصوص مع الرمز "type="application/javascript بينما أتش تي أم أل HTML4.01 وأتش تي أم أل HTML 5 التي من مواصفاتها ذكر text/Javascript فهي مدعومه من جميع المتصفحات الرئيسية وأكثر شيوعا في الاستخدام. كما أن من مواصفات اتش تي ام الHTML 5 أيضا في حالة عدم تحديد الرمز type في علامه نصيه فانه يتم إعطاء الرمز type attribute) type) قيمه افتراضيه وهي "application/javascript"._NEWLINE_لتضمين كود لغة الجافا سكريبت في ملفات أتش تي أم أل HTML، يجب أن يسبق الكود بالعلامه <script> ويليه بالعلامه </script> (عند اهمال خيارات الرمز (attribute))_NEWLINE_تتطلب المتصفحات القديمة عتد الكتابة بلغة الجافا سكريبت عادة الابتداء بالكود الاتي:_NEWLINE_ <script language="JavaScript" type="text/javascript >_NEWLINE_و الاختتام ب:_NEWLINE_ <--// </script>_NEWLINE_رمز التعليقات الموضحه (<! --... -->) هو أمر مطلوب لضمان عدم معالجة وتقديم الكود كنص في المتصفحات القديمة جدا التي لا تعترف بالعلامه <script>في ملفات HTML(على الرغم من أن العلامة<script> حين ورودها ضمن العلامة <head> لايمكن معالجتها وبالتالي فإن علامات التعليقات الموضحه ليست ضرورية دائما)، وبالتالي فان الرمز LANGUAGE مهمل في لغة أتش تي أم أل HTML مع انها قد تكون مطلوبة للمتصفحات القديمة. مع أن علامة <script> في ملفات XML /XHTML لن تعمل إذا كانت ضمن التعليقات الموضحه، والموزعات المتوافقة مع XML /XHTML تتجاهل التعليقات وقد تواجه مشاكل مع علامات --، <and > في البرامج النصية (على سبيل المثال مع عمليات تناقص العدادات وعمليات المقارنه). وعلى هذا فان ملفات XHTML لا بد لها من نصوص محتوات على شكل أجزاء XML CDATA، وذلك بسبق هذه النصوص بمايلي :_NEWLINE_ <script type="text/javascript> ]CDATA]!>//_NEWLINE_ويلي ذلك الكود الكود التالي:_NEWLINE_ <[[//</script>_NEWLINE_(الرمز المزدوج // في بداية السطر يعين التعليقات الموضحه، مما يمنع CDATA]]!> و<// من تحليلها من قبل البرنامج النصي)._NEWLINE_أسهل طريقة لتجنب هذه المشكلة (وأيضا باعتباره من أفضل الممارسات) هو استخدام نص خارجي كما يلي:_NEWLINE_ <script type="text/javascript" src="hello.js>_NEWLINE__NEWLINE_ </script>_NEWLINE_تاريخيا ،يستخدم الرمز (attribute language)الغير قياسي(non-W3C)في السياق التالي:_NEWLINE_ <scriptlanguage="JavaScript" src="hello.js>_NEWLINE__NEWLINE_ </script>_NEWLINE_عناصر اتش تي ام ال (HTML (2 قد تحتوي على أحداث حقيقيه تمكنك من التعامل مع المعالج النصي._NEWLINE_لكتابة كود فعال بلغة أتش تي أم ألHTML 4.01. يجب أن يرجع خادم الويب (web server) نوع المحتوى النصي 'Content-Script-Type' مع القيمة 'text/javascript'. إذا كان خادم الويب لا يمكن أن يعمل ذلك، فان كاتب الموقع اختياريا يقوم بادراج الإعلان التالي للغة البرمجة النصية الافتراضية في مقطع رأس الملف._NEWLINE_ </metahttp-equiv="Content-Script-Type" content="text/javascript >
_START_SECTION_
مثال(أهلا بالعالم)
_START_PARAGRAPH_
تفسيرا للبرنامج التقليدي "أهلا بالعالم" انظر إلى برنامج أهلا بالعالم._NEWLINE_هذه هي أسهل طريقة لبرنامج (أهلا بالعالم)التي تنطوي على استخدام دعم نظام المتصفحات الشائعة لبرتكول ظهور "javascript " لتنفيذ كود الجافا سكريبت. أدخل ما يلي باعتباره عنوان إنترنت (عادة بلصقها في مربع العنوان) :_NEWLINE__NEWLINE_  _NEWLINE_javascript:alert('Hello, world !');
_START_SECTION_
الأحداث
_START_PARAGRAPH_
عقود العنصر (Element nodes)قد تكون المصدر لمختلف الأحداث التي يمكن أن تسبب النشاطات إذا كانت معالجات هذه الأحداث مسجله. دوال معالجات هذه الأحداث غالبا ما تعرف كدوال مجهوله حيث تعرف مباشرة داخل عقود العنصر(Element nodes).
_START_SECTION_
اللاتوافقيه
_START_PARAGRAPH_
ملاحظة : معظم حالات عدم التوافق ليست من قضايا لغة الجافا سكريبت بل هي بالتحديد لنموذج غرض المستند (DOM). تطبيقات لغة الجافا سكريبت لمتصفحات الويب الحديثة والأكثر شيوعا عادة ماتلتزم بمعايير ECMAScript القياسية، حيث أن معظم حالات عدم التوافق هي جزء من تطبيق (نموذج غرض المستند) (DOM). هناك بعض القضايا المعارضة موجوده عبر تطبيقات لغة الجافا سكريبت وتشمل التعامل مع عدد من القيم البدائية مثل "غير معروف" والتعامل مع الطرق المتوفره التي قدمت في الإصدار الأخير من ECMAScript مثل ()pop()),push(), sheft(), unshift وطرق المصفوفات المختلفة._NEWLINE_لغة الجافا سكريبت مشابهه للغة ال أتش تي أم أل(HTML)فهي غالبا غير متوافقة مع المعايير القياسيه فقد صممت لتعمل مع متصفحات محدوده. معاييرال ECMAScript القياسية الحالية ينبغي أن تكون قاعدة لجميع تطبيقات لغة الجافا سكريبت، من الناحية النظرية، ولكن في الممارسة العملية نجد ان متصفحات الموزيلا (موزيلا، فايرفوكس ونت سكيب المستكشف) تستخدم الجافا سكريبت، متصفح مايكروسوفت إنترنت إكسبلورر يستخدم JScript، ومتصفحات أخرى مثل أوبرا وسفاري تستخدم تطبيقات ECMAScript عادة مع خصائص غير قياسيه إضافية لتتيح التوافق مع جافا سكريبت و JScript._NEWLINE_لغة الجافا سكريبت ولغة الجي سكريبت تحتوي على العديد من الخصائص التي ليست جزءا من مواصفات لغة ECMAScript القياسية، ويمكن أيضا أن تغيب العديد من خصائص لغة ECMAScript في هذه اللغتين. ففي هذا الاطار فإنها في بعض النقاط غير متوافقه، الأمر الذي يتطلب من المبرمجين العمل على التغلب على هذه العيوب.لغة الجافا سكريبت أكثر موافقه للمعايير بالنسبة لمايكرسوفت JScript، الأمر الذي يعني أن الملفات النصيه المكتوبه وفقا لمعايير ECMA هي أقل احتمالا في العمل على متصفحات معتمده على الإنترنت إكسبلورر. ومع هذا فهوأمر بعيد الاحتمال بسسبب ان نقاط عدم التوافق قليله نسبيا. هذا يعني أيضا أن كل متصفح قد يعامل نفس النص بشكل مختلف، بالإضافة من أن هناك نصوص قد تعمل في متصفح وتفشل في متصفح آخر، أو حتى في صيغة (إصدار) مختلفة من نفس المتصفح. كما هو الحال مع أتش تي أم أل (HTML)، بالتالي، فمن المستحسن أن يكتب الكود بالمعايير المتوافقة.
_START_SECTION_
مكافحة عدم التوافق
_START_PARAGRAPH_
هناك نوعان من التقنيات الأساسية لمعالجة عدم التوافق:تحسس المتصفح (browser sniffing)واكتشاف الكائنات (object detection). عندما لم يكن هناك سوى اثنين من المتصفحات التي لديها قدرات البرمجة (نتسكيب، وإنترنت إكسبلورر) ،حينها كان أسلوب (browser sniffing) هو الأسلوب الأكثر جاذبيه. باختبار عدد من خصائص المستخدم والتي تنتج معلومات عن تجهيزات الحاسب والمتصفح ومعلومات الإصدارات يكون في إمكان النص التبين بالضبط في اي مستعرض يتم تنفيذ البرنامج. مؤخرا أصبح أسلوب تحسس المتصفح(browser sniffing) أكثر صعوبة في التنفيذ عندما بدأ إنترنت إكسبلورر يعطي معلومات متصفح غير دقيقة وعلى نحو متزايد (الأسباب وراء ذلك ما زالت غير واضحة). وكذلك فان هذا الأسلوب شكل من أشكال الفن القديم صعب التطبيق حيث أصبح يوجد كثير من المتصفحات النصية المعروضه في الأسواق، ولكل منهما تجهيزاته الخاصة وجهاز عميله الخاص ومعلومات الإصدار الخاصة به._NEWLINE_تقنية الكشف عن الكائن (object)تعتمد على اختبار وجود خاصية الكائن._NEWLINE_ (function set_image_source (imageName, imageURL } (if (document.images  _NEWLINE_                    _NEWLINE_ }_NEWLINE_document.images[imageName].src = imageURL_NEWLINE_{_NEWLINE_{_NEWLINE_وهناك مثال أكثر تعقيدا ويعتمد على استخدام اختبارات الربط المنطقيه:_NEWLINE_(if (document.body & & document.body.style_NEWLINE_في ما سبق، فإن الجمله document.body.style من شأنها عادة ان تسبب خطأ في المتصفح التي ليس لديها خاصية " document.body "، ولكن باستخدام الرمز المنطقي && فانه يضمن عدم مناداة document.body.style عند عدم توفر الخاصيه document.body". هذه التقنية السابقة تسمى تقنية التقييم الادنى. حاليا، مزيج من تقنية تحسس المتصفحات (browser sniffing)،وتقنية الكشف عن الكائنات object detection، والاعتماد على المعايير مثل مواصفات ECMAScript وصفحات الطرز المتراصة (CSS) تستخدم جميعها بدرجات متفاوتة، في محاولة لضمان أن لا يرى المستخدم أبدا رسائل لأخطاء في لغة الجافا سكريبت.