جافا سكريبت الواضحة

الحاجة إلى نموذج جديد

لغة جافا سكريبت تاريخيا كان لها سمعة باعتبارها خرقاء، ولغة (hackish) غير صالحة لتطوير التطبيقات ،  هذا وقد تم إلى حد كبير نظرا للتطبيقات الغير متناسقة من اللغة نفسها في مختلف برامج التصفح، والاستخدام الواسع النطاق لرموز القص واللصق. إن الخطأ وقت التشغيل شائع بشكل كبير (وذلك من الصعب تصحيحه) أن قله من المبرمجين حاولوا أن يثبتوها، فطالما أن للنصوص سلوكا أكثر أو أقل من الطريقة المفترضه  ؛ النصوص غالبا ماتفشل تماما في بعض المتصفحات.
وظهر مؤخرا العديد من المتصفحات الموحدة وجافا سكريبت وأدوات تصحيح عالية الجودة كونت المنظمة، فمن الممكن تحجيم شفرة جافا سكريبت، وأصبح من الضروري ظهور واجهات (أجاكس).
في حين كان الجافا سكريبت قد حجزت لمرّة واحده للمهام البسيطة والغير حرجة نسبيا مثل التحقق من صحة النموذج والطرافات الزخرفية، أماالآن فتستخدم لكتابة مصادر برامج كبيره ومعقده التي غالبا ما تكون جزءا من الوظائف الأساسية للموقع. أخطاء التشغيل وأي سلوك غير متوقع لم تعد عيوب بسيطه، هي عيوب قاتلة.
"جافا سكريبت الواضحة" يمكن اعتبارها جزءا كبيرا من معاييرالويب ؛ لشدة الطلب للتوافق عبر المتصفح دفع إلى تزايد التركيز على الترميز الموحد، وتزايد الطلب على تطبيقات الإنترنت الغنيةهو الذي يقود الحركة إلى ظهور جافا سكريبت مخفيه قويه. على المدى اخترع في عام 2002 من قبل (Stuart Langridge)

فصل السلوك من الترميزية

تقليديا، جافا سكريبت وضعت في كثير من الأحيان متوافقة مع أتش تي أم أل لترميزية. على سبيل المثال، ما يلي هو تطبيق نموذجي للجافا سكريبت
 <input type="text" name="date" onchange="validateDate(this);"/>
ومع ذلك، فإن الغرض من العلامات هو وصف وثيقة الهيكل، وليس سلوكا برنامجيا.. الجمع بين اثنين يؤثر سلبا على موقع الصيانة لنفس السبب الذي يجمع بين المضمون والعرض : إذا كان الموقع يحتوي على المئات من حقول التاريخ من هذا القبيل، تضاف خاصيّة onchange الملائمة لكلّ واحد (وتعدّلهم لاحقا، في حاله الحاجة) يمكن أن تكون عملية عمل مركّزة.
أن الحلول الخفيه هي لتسجيل معالجات الأحداث الضرورية برمجيا، بدلا من أن تكون مضمونه. وهذاشائع عن طريق تعيين خاصيهCSS محدده لجميع العناصر التي تحتاج إلى اتخاذ إجراءات من قبل البرنامج النصي :
 <input type="text" name="date">
المخطوطات يمكنها بعد ذلك البحث عن جميع عناصر المدخلات بالتاريخ، وإقامتها وفقا لذلك :
باستخدام جافا سكريبت الأصلي :
 
window.onload = function(){ // ينتظر الصفحة للتحميل
 var inputs = document.getElementsByTagName('input'); 
 } (++for(var i=0,l=inputs.length;i<l;i 
 input = inputs[i]; 
 if(input.name &amp;&amp; input.name=='date') 
 input.onchange = function()} 
 validateDate(this);} 
 } } } }; 
function validateDate(){ 
 / / يعمل عندما يكون المحتوى من 'المدخلات' مع اسم 'تاريخ'متغيير.{
النص التالي محدد لمكتبة موتولز:
 
window.addEvent('domready', function() { 
 $$('input[name=date]').addEvent('change', function(){ 
 validateDate(this); 
 }); 
}); 
function validateDate(element){ 
 / / يعمل عندما يتغير محتوى 'عنصر'.
}
النص التالي هو محدد لمكتبة جي كويري:
 
$(document).ready(function(){ //ينتظر الصفحة للتحميل. 
 $('input[name=date]').bind('change', function (){ 
 validateDate(this);
 });});function validateDate(element){ 
 / /يعمل عندما يكون محتوى 'عنصر' قد تم تغييره.}
لأن الغرض المقصود من السمة name هو لوصف الدور الدلالي للعنصر، وهذا النهج يتسق مع المعايير الحديثة التي ترتكز على الممارسات الترميزية.

تحمل الأخطاء

ويمكن التحقيق من ذلك عن طريق التأكد من الوصلات والأشكال التي يمكن أن تحل بشكل صحيح وليس الاعتماد فقط على Ajax. في الجافا سكريبت ،على سبيل المثال في تقديم نموذج يمكن إيقافه باستخدام ("return false"). إذا لم يكن هناك أي خطأ، كود (Ajax)سينفذ وتقديم النموذج سيهمل. إذا كانت أية مشاكل تحدث مع وكيل مستخدم Ajax أو إذا كان المستخدم ليس لديه جافا سكريبت، سيقدم النموذج وتكّون الصيغة التقليدية للعمل.