**جافا سكريبت جهة المستخدم** (CSJS) تتمثل في البرمجة بلغة جافا سكريبت على جهة المستخدم. وفي حين أن لغة جافا سكريبت تم إنشاؤاها أصلا للعمل على جهة المستخدم، إلا أن هذا المصطلح قد برز لأن اللغة لم تعد تقتصر على مجرد جهة المستخدم بل أصبحت تستعمل بشكل كبير في جهة الخادم أيضا (SSJS) من خلال محركات مثل نود.جي إس.

بيئة (جافا سكريبت-جهة المستخدم)
-------------------------------

(application/javascript)الصيغه السابقة هي نوع من أنواع الإعلان بالإنترنت لكود المصدر لجافا سكريبت التي تم تسجيلها في عام 2006 لكن هذا النوع غير معتمد من قبل جميع المتصفحات الرئيسية. فعلى سبيل المثال إنترنت إكسبلورر (بما في ذلك النسخة من 6 إلى 8) يتجاهل النصوص مع الرمز "type="application/javascript بينما أتش تي أم أل HTML4.01 وأتش تي أم أل HTML 5 التي من مواصفاتها ذكر text/Javascript فهي مدعومه من جميع المتصفحات الرئيسية وأكثر شيوعا في الاستخدام. كما أن من مواصفات اتش تي ام الHTML 5 أيضا في حالة عدم تحديد الرمز type في علامه نصية فانه يتم إعطاء الرمز type attribute) type) قيمه افتراضية وهي "application/javascript".

لتضمين كود لغة الجافا سكريبت في ملفات أتش تي أم أل HTML، يجب أن يسبق الكود بالعلامه <script> ويليه بالعلامه </script> (عند اهمال خيارات الرمز (attribute))

تتطلب المتصفحات القديمة عتد الكتابة بلغة الجافا سكريبت عادة الابتداء بالكود الأتي:

**<script language="JavaScript" type="text/javascript >**

والاختتام ب:

```
 **<--// </script>**
```

رمز التعليقات الموضحه (<! --... -->) هو أمر مطلوب لضمان عدم معالجة وتقديم الكود كنص في المتصفحات القديمة جدا التي لا تعترف بالعلامه <script>في ملفات HTML(على الرغم من أن العلامة<script> حين ورودها ضمن العلامة <head> لايمكن معالجتها وبالتالي فإن علامات التعليقات الموضحه ليست ضرورية دائما)، وبالتالي فان الرمز LANGUAGE مهمل في لغة أتش تي أم أل HTML مع انها قد تكون مطلوبة للمتصفحات القديمة. مع أن علامة <script> في ملفات XML /XHTML لن تعمل إذا كانت ضمن التعليقات الموضحه، والموزعات المتوافقة مع XML /XHTML تتجاهل التعليقات وقد تواجه مشاكل مع علامات --، <and > في البرامج النصية (على سبيل المثال مع عمليات تناقص العدادات وعمليات المقارنه). وعلى هذا فان ملفات XHTML لا بد لها من نصوص محتوات على شكل أجزاء XML CDATA، وذلك بسبق هذه النصوص بمايلي :

```
 **<script type="text/javascript>**
```

```
 **]CDATA]!>//**
```

ويلي ذلك الكود الكود التالي:

```
 **<[[//**
```

```
**</script>**
(الرمز المزدوج // في بداية السطر يعين التعليقات الموضحه، مما يمنع CDATA]]!> و<// من تحليلها من قبل البرنامج النصي).
```

أسهل طريقة لتجنب هذه المشكلة (وأيضا باعتباره من أفضل الممارسات) هو استخدام نص خارجي كما يلي:

```
 **<script type="text/javascript" src="hello.js>**

 **</script>**
```

تاريخيا ،يستخدم الرمز (attribute language)الغير قياسي(non-W3C)في السياق التالي:

```
 **<scriptlanguage="JavaScript" src="hello.js>**

 **</script>**
```

عناصر اتش تي ام ال (HTML (2 قد تحتوي على أحداث حقيقية تمكنك من التعامل مع المعالج النصي.
لكتابة كود فعال بلغة أتش تي أم ألHTML 4.01. يجب أن يرجع خادم الويب (web server) نوع المحتوى النصي 'Content-Script-Type' مع القيمة 'text/javascript'. إذا كان خادم الويب لا يمكن أن يعمل ذلك، فان كاتب الموقع اختياريا يقوم بإدراج الإعلان التالي للغة البرمجة النصية الافتراضية في مقطع رأس الملف.

```
 **</metahttp-equiv="Content-Script-Type" content="text/javascript >**
```

مثال(أهلا بالعالم)
------------------

تفسيرا للبرنامج التقليدي "أهلا بالعالم" انظر إلى برنامج أهلا بالعالم.

هذه هي أسهل طريقة لبرنامج (أهلا بالعالم)التي تنطوي على استخدام دعم نظام المتصفحات الشائعة لبرتكول ظهور "javascript "لتنفيذ كود الجافا سكريبت. أدخل ما يلي باعتباره عنوان إنترنت (عادة بلصقها في مربع العنوان):

**```
javascript:alert('Hello, world !');

```**

محتويات نموذج غرض المستند(DOM)
------------------------------

### تفاعلات المستخدم

أكثر التفاعلات مع المستخدم تتم باستخدام أشكال أتش تي أم أل التي يمكن الوصول إليها من خلال نموذج غرض المستند لاتش تي ام ال (HTML DOM). ومع ذلك فان هناك أيضا بعض الوسائل البسيطة للتواصل مع المستخدم:

* •مربع الحوار لغرض التنبيه
* •مربع الحوار لغرض التأكيد ومربع الحوار لغرض التوجيه
* شريط الحالة
* • لوحة المحاوره console

### الأحداث

عقود العنصر (Element nodes)قد تكون المصدر لمختلف الأحداث التي يمكن أن تسبب النشاطات إذا كانت معالجات هذه الأحداث مسجلة. دوال معالجات هذه الأحداث غالبا ما تعرف كدوال مجهولة حيث تعرف مباشرة داخل عقود العنصر (Element nodes).

اللاتوافقية
-----------

ملاحظة: معظم حالات عدم التوافق ليست من قضايا لغة الجافا سكريبت بل هي بالتحديد لنموذج غرض المستند (DOM). تطبيقات لغة الجافا سكريبت لمتصفحات الويب الحديثة والأكثر شيوعا عادة ماتلتزم بمعايير ECMAScript القياسية، حيث أن معظم حالات عدم التوافق هي جزء من تطبيق (نموذج غرض المستند) (DOM). هناك بعض القضايا المعارضة موجوده عبر تطبيقات لغة الجافا سكريبت وتشمل التعامل مع عدد من القيم البدائية مثل "غير معروف" والتعامل مع الطرق المتوفره التي قدمت في الإصدار الأخير من ECMAScript مثل ()pop()),push(), sheft(), unshift وطرق المصفوفات المختلفة.

لغة الجافا سكريبت مشابهه للغة ال أتش تي أم أل(HTML)فهي غالبا غير متوافقة مع المعايير القياسيه فقد صممت لتعمل مع متصفحات محدوده. معاييرال ECMAScript القياسية الحالية ينبغي أن تكون قاعدة لجميع تطبيقات لغة الجافا سكريبت، من الناحية النظرية، ولكن في الممارسة العملية نجد ان متصفحات الموزيلا (موزيلا، فايرفوكس ونت سكيب المستكشف) تستخدم الجافا سكريبت، متصفح مايكروسوفت إنترنت إكسبلورر يستخدم JScript، ومتصفحات أخرى مثل أوبرا وسفاري تستخدم تطبيقات ECMAScript عادة مع خصائص غير قياسيه إضافية لتتيح التوافق مع جافا سكريبت و JScript.

لغة الجافا سكريبت ولغة الجي سكريبت تحتوي على العديد من الخصائص التي ليست جزءا من مواصفات لغة ECMAScript القياسية، ويمكن أيضا أن تغيب العديد من خصائص لغة ECMAScript في هذه اللغتين. ففي هذا الاطار فإنها في بعض النقاط غير متوافقه، الأمر الذي يتطلب من المبرمجين العمل على التغلب على هذه العيوب.لغة الجافا سكريبت أكثر موافقه للمعايير بالنسبة لمايكرسوفت JScript، الأمر الذي يعني أن الملفات النصية المكتوبة وفقا لمعايير ECMA هي أقل احتمالا في العمل على متصفحات معتمده على الإنترنت إكسبلورر. ومع هذا فهوأمر بعيد الاحتمال بسسبب ان نقاط عدم التوافق قليله نسبيا. هذا يعني أيضا أن كل متصفح قد يعامل نفس النص بشكل مختلف، بالإضافة من أن هناك نصوص قد تعمل في متصفح وتفشل في متصفح آخر، أو حتى في صيغة (إصدار) مختلفة من نفس المتصفح. كما هو الحال مع أتش تي أم أل (HTML)، بالتالي، فمن المستحسن أن يكتب الكود بالمعايير المتوافقة.

مكافحة عدم التوافق
------------------

هناك نوعان من التقنيات الأساسية لمعالجة عدم التوافق:تحسس المتصفح (browser sniffing)واكتشاف الكائنات (object detection). عندما لم يكن هناك سوى اثنين من المتصفحات التي لديها قدرات البرمجة (نتسكيب، وإنترنت إكسبلورر) ،حينها كان أسلوب (browser sniffing) هو الأسلوب الأكثر جاذبية. باختبار عدد من خصائص المستخدم والتي تنتج معلومات عن تجهيزات الحاسب والمتصفح ومعلومات الإصدارات يكون في إمكان النص التبين بالضبط في اي مستعرض يتم تنفيذ البرنامج. مؤخرا أصبح أسلوب تحسس المتصفح(browser sniffing) أكثر صعوبة في التنفيذ عندما بدأ إنترنت إكسبلورر يعطي معلومات متصفح غير دقيقة وعلى نحو متزايد (الأسباب وراء ذلك ما زالت غير واضحة). وكذلك فان هذا الأسلوب شكل من أشكال الفن القديم صعب التطبيق حيث أصبح يوجد كثير من المتصفحات النصية المعروضه في الأسواق، ولكل منهما تجهيزاته الخاصة وجهاز عميله الخاص ومعلومات الإصدار الخاصة به.

تقنية الكشف عن الكائن (object)تعتمد على اختبار وجود خاصية الكائن.

```
 **(function set\_image\_source (imageName, imageURL**
```

```
 **}**
```

```
 **(if (document.images**  
                    
 **}**
document.images[imageName].src = imageURL
{
{
```

وهناك مثال أكثر تعقيدا ويعتمد على استخدام اختبارات الربط المنطقية:

(if (document.body & & document.body.style

في ما سبق، فإن الجمله document.body.style من شأنها عادة ان تسبب خطأ في المتصفح التي ليس لديها خاصية "document.body "، ولكن باستخدام الرمز المنطقي && فانه يضمن عدم مناداة document.body.style عند عدم توفر الخاصيه document.body". هذه التقنية السابقة تسمى تقنية التقييم الأدنى. حاليا، مزيج من تقنية تحسس المتصفحات (browser sniffing)،وتقنية الكشف عن الكائنات object detection، والاعتماد على المعايير مثل مواصفات ECMAScript وصفحات الطرز المتراصة (CSS) تستخدم جميعها بدرجات متفاوتة، في محاولة لضمان ألا يرى المستخدم أبدا رسائل لأخطاء في لغة الجافا سكريبت.

* أيقونة بوابةبوابة برمجة الحاسوب
* أيقونة بوابةبوابة إنترنت
* أيقونة بوابةبوابة برمجيات