بخشی از مقاله
مقدمه :
انتخاب موضوع جاوااسكريپت،به معني ورودبه دنياي طراحي و برنامه نويسي صفحات وب است. وب جهاني كه در ابتدا تنها بعنوان مخزني از اطلاعات مختلف كه درقالب صفحاتي ساكن تنظيم شده بودند در نظر گرفته ميشد. با رشد سريع خود توانست به يكي ازمهمترين وسايل آموزشي ،ارتباطي ،تجاري و تفريحي تبديل شود. به موازات رشد سريع اين رسانه، ابزارهاوروشهاي توسعه آن نيز رشد كرده و متحول شده است .
گـر چه جـاوااسكـريپت يك زبان برنامه نويسي است،اما فراگيري آن بسيار ساده است. برخلاف اكثر زبانهاي برنامه نويسي،براي آموختن اين زبان به دانش زيادي نياز نداريد.سادگي ودر عين حال تواناييهاي فوق العاده اين زبان آنرا به يك ابزار مشهور وپر طرفدار براي برنامه نويسي در صفحات وب تبديل كرده است . در واقع امروزه كمتر صفحه وبي را مي يابيد كه در آن از جاوااسكريپت استفاده نشده باشد.
جاوااسكريپت چيست؟
وب جهاني (WWW)،درابتدا رسانه اي محسوب مي شد كه چيزي بيش از متن در خود داشت.
نسخة اوليه HTMLحتي قابليت تعريف يك تصوير گرافيكي را نيزدرصفحه نداشت.سـايتهاي وب امروزي مي توانند شامل قابلـيتهاي بسياري ازجمله تصاويرگرافيكي،صوت،انيميشن،ويديو وسايرمطالب چندرسانه اي باشند.زبانـهاي اسكـريپت نويسي وب، مانندجـاوااسكـريپت ، يكي ازساده ترين روشهاي ايجاد رابطة متقابل باكاربران وخلق جلوه هاي ديناميك محسوب ميشوند.
1ـ1)اصول اسكريپت نويسي درصفحات وب :
اساساً انسانها براي انتقال دادن دستورات خود به كامپيوتر از زبانهايC,Basic وجاوا استفاده ميكنند.اگرشما باHTML آشنا باشيد بايدگفت حداقل يك زبان كـامپيوتري رامي شناسيد.به كمك دستورات زبانHTML مي توان با ساختار يك صفحه وب را تعريف كرد.مرورگر با اطـاعت از اين دستورات ظاهر صفحه رابراساس ساختار مورد نظر تنظيم مي نمايد.
HTML يك زبان علامتگذاري ساده متن مي باشد،نمي تواند با كاربران رابطة متقابل ايجاد كندويا ازآنجايي كه براساس شروط خاصي تصميماتي رااتخاذ كند. براي انجام اعمالي ازاين قبيل بايد از زبانهاي پيـچيده تري كمك گرفت. چنين زباني مي تواند يك زبان برنامه نويسي ويا يك زبان اسكريپت باشد.
اكثرزبانهاي برنامه نويسي پيچيده هستند.درمقابل، زبانهاي اسكريپتي معمولاً ازساختاربسيارساده تري برخوردار هستند.دراين زبانها ميتوان به كمك دستوراتي ساده،برخي ازعمليات موردنظررابانجام رساند.زبانهاي اسكريپتي
نداشته مي شوند.چنين سندي ميتواند يك HTML تركيب شده ومجموعه آنها در يك سندHTML وب با دستورات صفحه ديناميك وب ايجادكند.
2ـ1)اسكـريپتهاو برنامه ها:
دستورات جـاوااسكـريپت براي اجرا شدن به يك مرورگر وب (Web Browers) و يابه طور كلي به يك نرم افزار مفسر جاواسكريپت (JavaScript Interpreetr) نياز دارند. بعضي از زبانهاي برنامه نويسي بايد قبل از اجرا به كدهاي زبان ماشين ترجمه شده و يا اصطلاحاً كمپايل شوند .
در مقابل ، دستورات جاوااسكريپت در هنگام اجرا تفسير مي گردند. به عبارت ديگر مرورگر با خواندن هر يك از اين دستورات آنرا تفسير و اجرا مي نمايد.
زبانهايي كه تفسير مي شوند يك مزيت بزرگ دارند و آن اين است كه نوشتن و يا تغيير دادن دستـورات HTMLچنين زباني بسيارساده است .مثلاً تغيير يك برنامه جاوااسكريپت به سادگي تغيير دستورات دريك سند HTML مي باشد اين تغيرات به محض بار شدن مجدد سند در صفحه وب اعمال خواهند شد.
3ـ1)معرفي جـاوااسكـريپت:
جـاوااسكـريپت براي اولين باربه وسيله شركت نت اسكيپ توسعه يافته ودرمرورگرnetscapenavegator به كار گرفته شد . اين زبان،اولين زبان اسكـريپتي در عرصه وب به شماررفته و همچنان پر استفاده ترين زبان اسكـريپتي ميباشد.
جاوااسكريپت در ابتداlivescript نام داشت ودرسال 1995درنسخه دوم netscapenavigator به كارگرفته شد سپس به جهت رابطه اي كه با جاوا برقرار نمود جـاوااسكـريپت نام گرفت.
4ـ1)قابليتهاي جـاوااسكـريپت:
1.افزودن پيغامهاي متحرك و متغير به نوار وضعيت (status bar ) مرورگر.
2.بررسي محتويات يك پرسشنامه و انجام عمليات لازم بر روي آن قبل از ارسال پرسشنامه به سوي سرويسگر .
3.نمايش پيغامهاي دلخواه بـراي كـاربرچه از داخل صفحه وب و چه ازطريق پنجره هاي هشـدار (Alert windowse ) ساخت انيميشن و يا تصاويري كه در اثر حركت يا كليك كردن موس تغييرمي يابند.
4.تشخيص نوع مرورگر و نمايش دادن مطالب بر اساس آن.
5.تشخيص برنامه هاي اتصالي نصب شده و هشدار به كاربر در صورت نياز به يك برنامه اتصالي خاص.
موارد بالا تنها نمونه هاي اندكي از قابليتهائي هستند كه جاوااسكريپت مي تواند به يك صفحه وب بيفزايد.
با استفاده از اين زبان مي توان برنامه هاي كاملي را در يك صفحه وب خلق كرد . ما در اين تحقيق سعـي
مي كنيم به آموزش اين زبان بپردازيم.
5ـ1)تفاوتهاي جـاوا و جـاوااسكـريپت:
اين دو زبان ذاتاً با يكديگر متفاوتند . مهمترين اين تفاوتها عبارتند از :
1.اپلتهاي جاوا براي اينكه بتوانند در يك مرورگر وب اجرا شوند ، بايد كمپايل شده و به فايلهايي با پسوند class تبديل شوند . در مقابل جـاوااسكـريپت از دستورات متني استفاده كرده و مي توانددر يك سند HTML نوشته شود.
2.اپلتهاي جـاوا معمولاً در يك پنجره يا يك قسمت جداگانه از صفحه اجرا مي شوند ولي دستورات جـاوااسكـريپت ميتواند بر روي هر قسمت از صفحه وب تأثيربگذارند.
3.در حالي كه جـاوااسكـريپت براي نوشتن برنامه هاي ساده، افزودن قابليتهاي ديناميك و ايجاد رابطه متقابل با كاربران بسيار مناسب است، به كمك جـاوا مي توان برنامه هايي كاملاِ پيچيده خلق كرد. براي مثال يك نسخه از پردازشگر متنcorels wordperfect كه با استفاده از جـاوا نوشته شده در دسترس قرار دارد .
بايد گفت انجام چنين پروژه اي به كمك جـاوااسكـريپت كاملاً غير ممكن است .علاوه بر موارد مذكور،تفاوتهاي زيادديگري بين اين دوزبان وجود دارد .به هرحال نكته مهم اين است كه به خاطر داشته باشيد جـاوااسكـريپت و جاوا دو زبان كاملاً متفاوت هستند.هر دوي اين زبان درموارد خاصي مفيد هستند و حتي ميتوان از هر دوي آنها در يك صفحه وب استفاده كرد .
6ـ1)چگونه جـاوااسكـريپت در يك صفحه وب قرار ميگيرد ؟
همانطوركه ميدانيدypertext Markup LanguageHTML زبان خلق صفحات وب ميباشندبراي يادآوري ليست زير را در نظـربگيريد.ايـن ليست يك سندHTML ساده با يك عبارت جاوااسكريپت رانشـان ميدهد:
<HTML>
<HEAD>
<TITLE>OUR HOME PAGE</TITLE>
<BODY>
<H1>THE SOCIETY</H1>
<P>WELCOME TO OUR WEB PAGE. UNFORTUNATELY.</P>
<SCRIPT LANUAGE=”JAVASCRIPT”>
DOCUMENT.WRITE(DOCUMENT.LASTMODIFIED);
</SCRIPT>
</BODY>
</HTML>
اين سند ،از يك قسمت سر (Head) ، كه بيـن دستورات <head > …</head> قرار گرفته،ويك قسمت بدنه (Body) ، كه بـه وسيله دستورات<body>…</body> مشخص گرديده ،تشكيل شـده است. بـراي افـزودن دستورات جـاوااسكـريپت به يك صفحه ،بايد از دستور <script> بهره جست.
دستور<script> به مرورگرميفهماند كه ازاين قسمت سند،تاهنگامي كه به دستـور پاياني</script> برخورد كند،با دستورات جاوااسكريپت مواجه خواهد شد.در اكثر موارد،استفاده از عبارات جـاوااسكـريپتي در خارج از محدوده دستور <script>مجاز نميباشد
بويژگيlanguage كه دركناردستور<script> واقع شده است توجه كنيد.ويژگي language= Javascript به مرورگـر ميفهماند كه زبان اسكريپتي اين قسمت از سند،جـاوااسكـريپت مي باشد . به همـراه اين ويژگي، همچنين ميتوان شماره نسخه جـاوااسكـريپت را ذكر كند.
خلق يك اسكـريپت:
جاوااسكريپت يك زبان اسكريپت نويسي در صفحات وب است . دستورات جاوااسكريپت را ميتوان مسـتقيماً درداخـل سندHTML قرار دادواين اسكريپتهادرهمان هنگام كه صفحه وب در مرورگـر به نمـايش در ميآيد اجرا خواهند شد .
1ـ2)ابزار اسكريپت نويسي:
ابزار اسكـريپت نويسي بر خلاف اكثرزبانهاي برنامه نويسي، براي نوشتن جـاوااسكـريپت به نرم افزارخاصي نياز نداريد.در واقع ، به احتمال زياد شما تمامي ابزار لازم براي استفاده از جاوااسكريپت را در اختيـار داريد .بـه طور كلي، اوليـن ابـزاري كه براي كار با جاوااسكريپت لازم است ،يك ويرايشگرمتن(Text E ditor) ميباشد . برنامه هاي جاوااسكريپت درقالب فايلهاي متني سـاده ومعمولاً بصورت جزئي ازيك سند HTML ذخيره مي گردند . بنابراين كه بتواند فايلهاي متني ASCII راويرايش كند،براي اين كار مناسب خواهد بود.
به هر حال شما مي تواند از بين ويرايشگرهاي متعددي كه دردسترسي قرار دارند (از يك ويرايشگر متن بسيار ساده گرفته تا پردازشگرهاي پيچيده) يكي را انتخاب كرده و بدين منظور استفاده نماييد. براي مثال ميتوانيد از نرمافزار Notepad كه در اكثر محيطهاي ويندوز در دسترس قرار دارد بهره بگيريد.
توجه داشته باشيد كه اگر از يك پردازشگر پيچيده متن، براي خلق برنامههاي جاوااسكريپت استفاده ميكنيد، بايد برنامة خود را در قالب يك فايل متني ASCII ذخيره نماييد.
بسياري از پردازشگرهاي متن از ساختارهاي پيچيدهتري به منظور ذخيرهسازي فايلهاي خوداستفاده ميكنند.
بعلاوه ويرايشگرهاي متعددي براي خلق اسنادHTML دردسترس قراردارندكه ازجاوااسكريپت نيز پشتيباني ميكنند.بسياري ازآنها شامل قابليتهاي خاصي براي كارباجاوااسكريپت ميباشند.مثلاًدستورات جاوااسكريپت را به رنگ ديگري نمايش ميدهند.بعضي ازآنها ميتواند بصورت اتوماتيك اسكريپتهاي سادهاي رابه صفحه اضافه كنند.
2ـ2)آغاز خلق اسكريپت :
براي نوشتن يك اسكريپت در سندHTML،بايد از دستور<script> استفاده كنيد.بعبارت ديگريك اسكريپت را بايد بين دستورات آغازين و پاياني <script>…</script> قرار دارد.
بخاطرداشته باشيدكه بين دستـورات آغازي وپاياني<script>…</script> هيچ چيز بجزعبارتهاودستورات جاوااسكـريپت قرار ندهيد. حتي اگر در اين بين يك دستور مجازHTML نيزوجودداشته باشد ، مرورگريك پيغام خطا نمايش خواهد داد.
بررسي قابليتهاي جاوااسكريپت:
1.زيباتر كردن ظاهر يك صفحه وب به كمك جاوااسكريپت
2.خلق پيغامهاي متحرك
3.قابليتهايي كه جاوااسكريپت در مورد تصاوير و انيميشنها در اختيار ما ميگذارد.
4.استفاده از جاوااسكريپت براي ارزيابي محتواي پرسشنامهها
5.تشخيص نوع مرورگر به كمك جاوااسكريپت
6.استفاده از جاوااسكريپت براي كار با برنامههاي اتصالي
7.خلق برنامههاي پيچيدهتر به كمك جاوااسكريپت
8.چگونه ميتوانيم يك اسكريپت را از يك صفحه ديگر به صفحه وب خود منتقل كنيم.
1ـ3)زيباتركردن ظاهر يك صفحه وب به كمك جاوااسكريپت :
اگر تاكنون به مرورصفحات وب جهاني پرداخته باشيد،مطمئناً به صفحات خستهكنندة زيادي برخوردكردهايد بايد گفت يكي از مهمترين موارد استفاده جاوااسكريپت، اضافه كردن جلوههايي زيبا به صفحات وب ميباشد از جمله ميتوان به قابليتهايي مانند پيغامهاي متحرك، انيميشنهاو روشهاي جديد ارائه اطلاعات نام برد.
1ـ1ـ3)استفاده از نوار وضعيت:
نوار وضعيت (Status bar) پايينترين قسمت پنجره يك مرورگرراتشكيل ميدهدكه معمولاًبه رنگ خاكستري ديده ميشود. مهمترين نقشهايي كه اين نوار به عهده دارد شامل موارد زير ميباشد:
1.نمايش توضيحات مربوط به منوها و يا ساير ابزار مرورگر
2.نمايش URL پيوندهايي كه نشانهگر موس بر روي آنها قرار داده ميشود.
3.نمايش وضعيت يا عملكرد فعلي مرورگر در حالي كه كاربر به مرور صفحات وب ميپردازد.
به كمك جاوااسكريپت ميتوان نوار وضعيت مرورگر را تحت كنترل درآورد. احتمالاً تاكنون صفحات وبي را كه از اين قابليت استفاده كرده ودر نوار وضعيت خودپيغامهاي متحركي را نمايش ميدهند ديدهايد. گرچه اين كـار ميتواند براي كاربران ناراحتكننده باشد اما هنوز يكي ازپراستفادهترين قابليتهاي جاوااسكريپت محسوب ميشود.
علاوه بر نمايش پيغامهاي متحرك،روشهاي ديگري نيز براي استفاده از اين نوار وجود دارد.براي مثال، ميتوان به تعويضURL يك پيوندباتوضيح ديگري در ارتباط باآن،هنگامي كه نشانهگر موس بر روي آن قرار ميگيرد اشاره نمود.
2ـ3)كار با برنامههاي اتصالي:
برنامههاي اتصالي(Plug-inها)برنامههاي كوچكي هستندكه به مرورگراضافه شده وآنرا قادرميسازند فايلهايي باساختارهاي متفاوت رادرصفحه وب اجرا نمايد.برنامههاي اتصالي متعددي دردسترس قراردارند.ازبرنامههايي براي اجراي فايلهاي صوتي و ويدئويي گرفته تابرنامههاي نمايش واقعيت مجازي همگي موجود ميباشند.
چهار برنامه اتصالي مشهور عبارتند از:
1.RealAudio
2.QuickTime
3.Adobe Acrobat
3.ShockWave
گرچه به كمك برنامههاي اتصالي تقريباً ميتوان هر محتوايي را به صفحات وب افزود، ولي مشكل بزرگي در راه استفاده وسيع از آنها وجود دارد.گذشته از برنامههاي اتصالي معدودي كه به همراه مرورگرهاوجود دارند، نمي توان بوجوديك برنامه اتصالي خاص به هرماه مرورگرتمامي كاربران مطمئن بود.به اين ترتيب برنامههاي اتصالي مشكلي شبيه بمشكل نسخههاي مختلف مرورگرها ايجاد ميكنند.تمامي كاربران از يك نسخه خاص ازيك مرورگرخاص، با برنامههاي خاص استفاده نميكنند، براي حل اين مشكل بايد يكـي از اين دو راه را انتخاب نماييد:
1. از برنامه اتصالي دلخواه استفاده كنيد و از تمامي كاربران بخواهيد آنرا برداشت و نصب نمايند.
2. صفحات جايگزيني براي كاربراني كه برنامه اتصالي مورد نظر شما را ندارند طراحي كنيد.
بكمك جاوااسكريپت ميتوان وجودياعدم وجود بـرنامه اتصالي مورد نظرراتشـخيص داده وصفحهاي مناسب رابه كاربرعرضه كرد.درصورت عدم وجود بـرنامه اتصالي دلخواه،ميتوانيدكاربررا به صفحهاي براي برداشت آن برنامه اتصالي هدايت نماييد.
علاوه بر تشخيص نوع برنامههاي اتصالي، جـاوااسكـريپت ميتواند با اين برنامهها ارتباط برقرار كرده و آنـها را كنترل نمايد. نت اسكيپ اين قابليت را LiveConnect ناميده است.
برنامههاي جاوااسكريپت چگونه كار ميكنند؟
در اين قسمت بااصول اوليه زبان جاوااسكريپت واجزاء اساسي آن كه تقريباًدر هربرنامة جاوااسكريپت وجود دارند، آشنا خواهيد شد.
بطور خلاصه در اين قسمت مطالب زير را ميآموزيد:
1.سازماندهي اسكريپتها به كمك توابع
2.اشياء چيستند و جاوااسكريپت چگونه آنها را بكار ميبرد.
3.جاوااسكريپت چگونه به حوادث پاسخ ميدهد.
4.مخفي كردن دستورات جاوااسكريپت از مرورگرهاي قديمي
5.استفاده از يك جايگزين جاوااسكريپت، براي مرورگرهاي قديمي
1ـ4)توابع در جاوااسكريپت:
درواقع،مرورگراولين دستوري راكه پس از<script> قرارداشت اجراكرده سپس خط به خط، سراغ دستورات بعدي ميرفت تا به دستور پاياني <script> برخورد كند.
گرچه اين روش، براي اسكـريپتهاي كوتاه، كاملاً قابل درك و ساده ميباشد. اما براي يك اسكـريپت طولاني ميتواند گيجكننده محسوب شود. جـاوااسكـريپت از قابليتي بنام (توابع) پشتيباني ميكند كه به سـازماندهي بيشتر اسكريپتها كمك مينمايد.
تعريف يك تابع :
توابع (Function)، تعدادي از دستورات جاوااسكريپت هستند كه ميتوان آنها را بعنوان يك گروه واحد در نظر گرفت و با يك ارجاع آنها را اجرا نمود. براي استفاده از يك تابع، در ابتدا بايد آنرا تعريف كرد. ليست 1-1، مثال سادهاي را نشان ميدهد كه در آن به تعريف يك تابع پرداختهايم.
ليست 1-1تعريف يك تابع
Function Greet() {
Alert(“Greetings.”);
}
در اين ليست تابعي تعريف شده است كه ميتواند يك پيغام هشدار (Alert Message) را نمايش دهد. بطور كلي براي تعريف يك تابع، ازعبارت function استفاده ميشود. پس ازاين عبارت، نام تابع(دراينجا Greet) قرار ميگيرد. به پرانتزهايي كه پس از اين نام قرار دارند توجه كنيد. در صفحات آينده خواهيد ديد كه فضاي بين اين پرانتزها هميشه خالي نميباشد.
سپس، علامتهاي كروشه }) و ({ در ابتدا و انتهاي دستوراتي كه آن تابع را تشكيل ميدهند قرار داده ميشوند. مرورگر به كمك اين علامتهاميتواندابتداوانتهاي تابع را تشخيص دهد.تابع مثال فوق، تنها ازيك دستور alert (كه يك پيغام هشدار را نمايش ميدهد) تشكيل شده است. در مورد پرانتزهايي كه در مقابل نام تابع مشـاهده كرديد، بايد گفت پـارامترهايي كه براي يك تابع فرستاده ميشوند در اين بين قرار ميگيرند. در اين مثال تابع Greet هميشه يك عمل خاص را انجام ميدهد: اين تابع پيغام “Greetings.” را براي كاربر نمايش ميدهد.
اگر ميخواهيد تابع شما قابليت انعطافپذيري بيشتري داشته باشد، ميتوانيد پـارامترهايي را براي آن تعريف كنيد. به اين پارامترها، آرگومان (Argument) نيز گفته ميشود.آرگومانها،متغيرهايي هستند كه هر بار كه تابع صدا زده ميشود، براي آن ارسال ميگردند. براي مثال ميتوانيد پارامتري بنام who را براي تابع مثال فوق در نظر بگيريد. تصور كنيد كه اين پارامتر نام شخصي را كه قصد داريد پيغام خوشآمدگويي را براي او بفرستيد
در بردارد.
البته،براي استفاده از يك تابع، بايد آنرا در يك سند HTML قرار داد. بطور معمول، بهترين قسمت سند براي قرارگيري توابع اسكريپتي، قسمت سر (head) آن ميباشد، زيرا به اين ترتيب ميتوان مطمئن بود كه يك تابع قبل از اينكه بخواهد مورد استفاده قرار بگيرد، براي مرورگر تعريف شده است.
2ـ4)اشياء در جاوااسكريپت :
بايد گفت جاوااسكريپت علاوه بر متغيرها، از اشياء (Objects) نيز پشتيباني ميكند. اشياء نيز همانند متغيرها ميتوانند دادهها را ذخيره نمايند؛ اما برخلاف متغيرها قادرند در يك مزان چند داده مختلف را در خود ذخيره كنند.دادههايي كه در يك شيء ذخيره ميگردنـد، خاصـيتهاي (Properties) آن شيء ناميده ميشوند. مثـلاً ميتوان اطلاعات مربوط به افراد از جمله نـام، آدرس، و شماره تلفن آنها را در قالب يك شيء كه Bob نـام دارد و به منظور ذخيرهسازي دادههاي مربوط به فردي بنام Bob تعريف شده است، ميتوانند Bob.address
و Bob.phone باشند.
اشياء همچنين ممكن است داراي يك يا چند متد (Method) باشند. متدها توابعي هستند كه عمليات خود را
بر روي دادههاي شيء مربوط به خود انجام ميدهند. براي مثال شيء مربوط به افراد، ممكن است شامل متدي بنام display() شيء Bob، عبارت Bob.display() بكار برده ميشود.
1ـ2ـ4)جاوااسكريپت از سه نوع شيء پشتيباني ميكند:
1.اشياء درون ساخت (Built-in): اشيايي هستند كه در داخل جاوااسكريپت و به عنـوان جزئي از اين زبان منظور شدهاند. مثال Dateو Math و Array و String.
2.اشياء مرورگر: اشيائي هستند كه نماينـده اجزاء مختلف مرورگر و سند HTML موجود هستند. مثلاً تـابع alert()، در واقع متدي از شيء window ميباشد.
اشياء اختصاصي تعريف شونده (Custom): اشيايي هستند كه توسط طراح صفحه تعريف ميگـردند.
براي مثال شما ميتوانيد يك شيء Person)) تعريف كرده و همانند مثال گذشته، اطلاعات مربوط به افراد
را در آن ذخيره نماييد و يا توابعي براي كار با اين اطلاعات طراحي كنيد.
3ـ4)كنترل حوادث:
همه اسكريپتهادرداخل دستورات<script> قرارنميگيرند.درواقع اسكريپت راميتوان عنوان كنترلگرحوادث نيز بكاربردگرچه اين عبارت، يك اصطلاح برنامهنويسي است اما دقيقاً بهمان معني لغوي خودميباشد:كنترلگرهاي حوادث اسكـريپتهايي هستند كه حوادث (Events) را كنترل ميكنند.
كنترل حوادث در جـاوااسكـريپت نيز روش مشابهي دارد:
كنترلگرهاي حوادث به مرورگر ميفهمانند در برخورد بايك حادثه خاص،چگونه بايد رفتار كند.البته حوادثي كه جاوااسكريپت با آنها سروكار دارد، با حوادث زندگي واقعي تفاوت زيادي دارند. براي مثال “كليك شدن دكمه موس” و يا “پايان يافتن روند برداشت صفحه” از جمله حوادثي هستند كه براي جاوااسكريپت اهميت دارند.
بسياري از حوادث جاوااسكريپت (از جمله كليكهاي موس) بوسيله كاربر ايجاد ميگردند. با رديابي حوادث
و واكنش نشان دادن نسبت به آنها، ميتوان روندعادي اجراي اسكريپتها را رها كرده و روتين مفسر اسكريپتها
را به يك اسكـريپت جديد هدايت نمود.نيازي به تـذكر نيست كه اين تكنيك جزء اساسي اكثـر برنـامههاي جاوااسكريپت را تشكيل ميدهد.
كنترلگرهاي حوادث بااشياء خاصي درمرورگر در ارتباط بوده و در همان دستوري كه شيء مربوطه را تعريف ميكند ذكر ميگردند.مثلاً براي تصويري كه قصد داريدازآن به عنوان يك پيوند استفاده كنيد، ميتوانيد حادثه “حركت نشانگر موس” بر روي آن را به ترتيب زير فعال نماييد:
<img src=”button.gif” onMouseOver=”highlight();”>
همانگونه كه مشاهده ميكنيد عبارتonMouseOver،بصورت يك ويژگي (Attribute) دركناردستور img ذكر شده است. اين كنترلگرهاي حادثه كه بصـورت يك ويـژگي به همراه دستورات HTML قرار ميگيرند، “ويژگيهاي حادثهاي” (Event Attribute) ناميده ميشوند. اين قسمت، مكان ايدهآلي براي استفاده از توابع محسوب ميشود زيرا بكار بردن نام توابع، كاملاً ساده است و از طرف ديگر ميتوان مجموعهاي از دستورات اسكـريپتي را در قالب يك تابع تنظيم كرده و در اثر فعال شدن حادثه مورد نظر، آنها را اجرا نمود.
4ـ4)مخفي كردن اسكـريپتها از مرورگرهاي قديمي :
هنوز كاربران زيادي وجود دارند كه از مرورگرهايي استفاده مينمايند كه با جاوااسكريپت ناسازگار هستند از
آن مهمتر، تعدادي از كاربران گزينه “پشتيباني از جـاوااسكـريپت” را در مرورگر خود خاموش كردهاند تا از مشكلات ايمني برخي از صفحات وب در امان باشند.
از آنجائيكه مرورگرهاي قديمي دستور> < script را نميشناسند، نميتوانند آنرا تفسير نمايند. در اكثر مـوارد، اين مرورگرها به جاي تفسير اسكـريپت، متن آنرا در صفحه نمايش ميدهند.
براي جلوگيري ازاين مشكل،ميتوان اسكريپتها رادرداخل دستورات توضيح HTML (Comment Tags) قرار داد.با اينكار مرورگرهاي قديمي آنرا ناديده گرفته و نمايش نخواهند داد.از طرف ديگر،مرورگرهاي جديد ميدانندكه دستورات توضيحي كه دربين دستورات آغازين و پاياني> < script منظور شدهاند،تنهابراي مخفي كردن اسكـريپت از ديد مرورگرهاي قديميتر در نظر گرفته شدهاند و لذا به تفسير اسكـريپت ادامه ميدهند. همانطوري كه ميدانيد براي نوشتن يك توضيح در سند HTML (كه بايد توسط مرورگر ناديده گرفته شود) كافي است علامت<!--را درابتداوعلامت - -> را در انتهاي آن قرار دهيد. علاوه بر دستورات آغازين و پاياني توضيح درHTML، علامت// نيز به چشم ميخورد.اين علامت، دستور توضيح در جـاوااسكـريپت را تشكيل ميدهد. درواقع با اينكار دستور پاياني توضيح يعني- -> را از ديد مفسر جـاوااسكـريپت نيز مخفي نمودهايم.
استفاده از مقادير و ذخيرهسازي آنها :
1ـ5)انتخاب نام براي متغييرها:
متغيرها را ميتوان يك“مخزن”براي ذخيرهسازي دادهها(مانند يك عدد، يك عبارت متني، يا يك شيء) دانست. همانگونه كه در فصول ابتدايي اين كتاب آموختيد، هر متغير با يك “نام” شناخته ميشود. بطور كلي به منظور انتخاب نام براي يك متغير، قوانين زير بايد در نظر گرفته شوند:
1.نام متغيرها ميتواند شـامل حروف الفبا (هم حروف بزرگ و هم حروف كوچك) باشد. همچنين اين نامها ميتوانند شامل اعداد (از صفر تا نه) و نيز كاراكتر underscore (-) باشند.
2.نام يك متغير نميتواند شامل حروف فاصله (space) و يا كاراكترهاي مربوط به نقطهگذاري باشد.
3.اولين حرف از نام يك متغير بايد از يك حرف الفبا و يا يك علامت underscore (-) تشكيل شده باشد.
3.حروف بزرگ وكوچك ازديدمفسرجاوااسكريپت تفاوت دارند. بنابراين متغيرهاي totanum، Totalnum
و TotalNum يكسان نميباشند.
4.از نظر تئوري، هيچ حد خاصي براي طول نام يك متغير درنظرگرفته نشده است ولي درعمل، طول آن نبايد
از يك خط تجاوز كند. همچنين به منظور استفاده از آنها در عبارات مختلف، طول آنها بايد به گونهاي در نظر گرفته شود كه امكان استفاده مجدد از آنها در همان خط فراهم باشد.
بهترست از نامهايي براي متغيرهاي استفاده كنيد كه بعداً به سادگي بتوانيدآنها را به خاطر آوريد.گرچه انتخاب نامهايي مانند x2,x1,x,b,a براي متغيرها ممكن است در وهله اول سادهتر بنظر برسد، اما توجه داشته باشيد كه اين نامها راممكن است بسرعت فراموش كنيد.بنابراين به شما توصيه ميكنيم نامهايي طولانيتروبه يادماندنيتر براي متغيرهاي خود برگزينيد.
بر اساس قوانين بالا، ميتوان گفت كه براي متغيرهاي زير، نامهاي مجاز و قابل قبولي انتخاب شده است:
total_number_of_fish
LastInvoiceNumber
Templ
a
_var39
2ـ5)انواع دادهها در جاوااسكريپت :
در بعضي از زبانهاي كامپيوتري، بايد نوع دادهاي كه يك متغير ذخيره خواهدكرد.درهنگام تعريف آن مشخص گردد.براي مثال يك متغيرممكن است به عنوان يك عددصحيح، يك عدد اعشاري، و يا يك رشته متني تعريف شود. در جـاوااسكـريپت، تعيين نوع دادهها جز در موارد معدودي لازم نيست.
1ـ2ـ5)انواع اساسي دادههاي جاوااسكريپت :
1.اعداد: مانند3، 25ويا414218/1جـاوااسكـريپت هر دو نوع اعداد صحيح و اعشاري را ميشناسد.
2.Boolean يا منطقي:اين دادهها تنها دو مقدار ميتوانند داشته باشند: درست (true) و نادرست(false).
استفاده از اين دادهها، زماني كه قصد بررسي يك شرط خاص را داريد ميتواند مفيد باشد.
3.رشتهها مانندThis is string اين دادههااز يك يا چند كاراكتر متني تشكيل يافتهاند.
به بيان دقيقتراين دادهها را بايد يك شيء String دانست.
4.مقدار پوچ يا null، كه با عبارتnull مشخص ميشود.يك متغير تعريف نشده، مقدارnull راخواهد داشت. براي مثال دستورducument.write(fig)،بافرض اينكه قبلاً متغير figتعريف نشده باشد،مقدارnull را نمايش ميدهد.
گرچه نوع دادهاي كه در يك متغير ذخيره ميشود براي مفسر جـاوااسكريپت اهميت دارد، اما بايد دانست كه
در اين زبان، متغيرهـا به يك نوع خاص از دادهها محدود نميشوند. به عبارت ديگر در طول يك اسكـريپت ميتوان از يك متغير براي ذخيرهسازي چند نوع داده مختلف استفاده نمود. براي مثال عبارت زيـر را در نظـر بگيريد:
total=31;
عبـارت فوق متغيري بنام total تعريف كرده و مقدار 31 را در آن قرار ميدهد. بنابراين يك نـوع داده عددي
براي يك متغير در نظر گرفته شده است. اكنون فرض كنيد در ادامه اين اسكريپت، عبارت زير را نوشتهايم.
Total=”albatross”;
به اين ترتيب مقدارجديدي براي اين متغيرتعيين ميشود.اين مقدارجديد،ازنوع مقادير رشتهاي به شمار ميرود جاوااسكريپت با مواجهه با اين عبارت، پيغام خطايي توليد نميكند. در واقع، اين كار در جاوااسكريپت كاملاً مجاز بوده و قابل انجام ميباشد.
رشتهها و آرايهها :
گرچه اعـداد نقش بسيار مهمي را در اسكـريپت نويسي ايفا ميكنند، اما بسياري از برنامههـاي اسكـريپتي به رشتههاي متني و آرايهها (گروههايي از اعداد، رشتهها، و يا اشياء) نيز نياز دارند. در اين قسمت، نحوه استفاده
از رشتهها و آرايهها را در جاوااسكريپت فرا خواهيد گرفت.
1ـ6)خلق يك شيء String :
جـاوااسكـريپت، رشتهها را به صورت اشياء String ذخيره ميكند. البتـه شمـا ممكن است در حالت عادي نيازي به دانستن اين موضوع نداشته باشيد، ولي به هر حال علم به اين مسئله مـيتواند تعـدادي از تكنيكهاي كار با رشتهها را (كه معمولاً بوسيله متدهاي شيء String به انجام ميرسند) توضيح دهد.
بطور كلي، دو روش براي ايجاد يك شيء String جديد وجود دارد. اوليـن روش، همان روشـي است كه تاكنون مورد استفاده قرار دادهايم و شـامل استفاده از يك علامت تساوي براي قرار دادن يك رشته، در يك
متغير ميباشد. در روش دوم، همانند روش خلق ساير اشياء از دستور new استفاده ميگردد.
براي مثال، هر دو عبارت زير ميتوانند براي خلق يك رشته بكار گرفته شوند:
test=”This is a test”;
test=new String (“This is a test”);
در عبارت دوم، به كمك دستور new به مرورگر فهمانده شده كه بايديك شيء جديد ازنوعString وحاوي
متن This is a test ساخته و آنرا در متغيري بنام test قرار دهد.
بررسي و مقايسه متغيرها :
در اين قسمت، با نحوه مقايسه متغيرها با يكديگر، و بررسي مقدار آنها به كمك دستورات بـررسي شرط در جـاوااسكـريپت آشنا خواهيد شد.
1ـ7)دستور if:
يكي از مهمترين قابليتهاي يك زبان كامپيوتري، توانايي آن در بررسي و مقايسه مقادير ميباشد. به اين ترتيب
بر اساس مقدار متغيرها، و يا بر اساس دادههايي كه از سوي كاربر دريافت ميشوند، عمليات متفـاوتي انجام داده وياواكنشهاي گوناگوني نشان داد.
دستور if مهمترين دستور براي بررسي شرطها در جاوااسكريپت محسوب ميشود. اين دستور مفهومي مشابه آنچه از كلمه if در زبان انگليسي به ذهن ميرسد را در بردارد. براي مثال به عبارت انگليسي زير توجه كنيد:
if the ohone rings,answer it.
عبارت فوق،ازدوقسمت عمده تشكيل شده است:
1.قسمت شرط(if phone rings)
2.قسمت نتيجه (answer it).
همين دو قسمت، در زبان جاوااسكريپت نيز براي دستور if در نظر گرفته ميشوند. به مثال زير توجه فرماييد:
if (a==1)window.alert(“Found a 1!”);
عبـارت فوق نيز از يك شرط (اگر a برابر يك باشد) و يك نتيجه (نمـايش داده شدن يك پيغام) تشكيل شده است. به بيان ديگر، عبارت فوق مقدار متغير a را بررسي كرده و در صورتي كه اين مقدار برابر 1 باشد، پيغام Found a 1! را نمايش ميدهد. در غير اينصورت هيچ عمل خاصي انجام نخواهد داد.
اگر قسمت “نتيجه” دستور if تنها از يك عبارت جـاوااسكـريپت تشكيل شده باشد، ميتوان آنرا همانند مثال فوق نوشت.درصورتيكه بخواهيد درقسمت نتيجه چندعبارت جـاوااسكـريپت قرار دهيد،بايدآنهارابا علامتهاي كروشه ({,}) احاطه كنيد.
2ـ7)دستور else :
دستور else را ميتوان قابليـت ديگري براي دستور if دانست. مفهوم اين دستور تقريباً شبيه معني كلمه else
در زبان انگليسي ميباشد. به عبارت ديگر، اين دستور عملياتي را كه مفسـّر جـاوااسكـريپت بايد در صورت درست نبودن قسمت شرط انجام دهد، مشخص ميكند.
تكرار دستورات با استفاده از حلقهها :
در اين قسمت نحوه استفاده از حلقهها براي انجام انجام عمليات تكراري را فرا خواهيد گرفت.
1ـ8)حلقههاي for :
معمولاً دستور for اولين ابزاري است كه براي ايجاد حلقهها در نظر گرفته ميشود. يك حلقه for، اساسـاً از يك متغير (كه شمارشگر يا انديس خوانده ميشود) براي مشخص كردن تعداد دفعـات اجـراي حلقه استفاده ميكند و هنگامي كه اين متغير به عدد مشخصث برسد، حلقه خاتمه مييابد. در زير مثالي از نحـوة استفاده از دستور for را مشاهده ميكنيد:
for(var=1;var<10;var++) {
در حلقه for، سه پارامتر كه با استفاده از نقطهبند (؛) از يكديگر جدا ميشوند، وجود دارند:
1.اولين پارامتر(در مثال بالا، var=1)متغيري را مشخص كرده و مقدار اوليهاي به آن نسبت ميدهد اين پارامتر وضعيت اوليه حلقه را تعيين كرده و عبارت آغازين Initial Experssion) ناميده ميشود.
2.دومين پارامتر(در مثال فوق var<10) شرطي رادر بردارد كه تنها در صورتي اجـراي حلقه ادامه مييابد كه اين شرط برقرار باشد.
3.سومين پارامتر يا عبارت افزاينده (Increment Expression) (در مثال فوق var++)، عبارتـي است كه باهر بار تكرار حلقه اجرا ميگردد. معمولاً از اين پارامتر براي افزودن به مقدار شمارشگر استفاده ميشود.
پس ازسه پارامتركه درداخل يك پرانتزقرارگرفتهاند،يك كروشة چپ ({) براي مشخص كردن شروع دستورات حلقه قرار ميگيرد. به همين ترتيب،در انتهاي دستورات داخل حلقه، يك كروشه راست (}) قرار داده ميشود. دستورات موجود بين اين كروشهها، با هر بار تكرار حلقه، يكبار اجرا ميشوند. همانند دستور if، اگر تنها يك دستور در داخل اين حلقه وجود داشته باشد، استفاده از كروشهها الزامي نخواهد بود.
2ـ8)حلقه هاي while:
دستورديگري كه براي ايجاد حلقه ها در جـاوااسكـريپت به كار برده مي شود. دستور while است. برخلاف حلقه هاي for ، در حلقه هاي while لزوماً از يك پارامترشمارشگر استفاده نمي شود. در عوض اين حلقه ها
تا زماني كه شرط خاصي(كه در پرانتزهاي مقابل عبارت while قرار مي گيرد)بر قرار باشد. اجرا خواهند شد. اگر اين شرط. در اولين اجراي حلقه بر قرار نباشد. دستورات آن حلقه هرگز اجرا نخواهند شد.
براي خلق چنين حلقه هائي،پس از كلمه while، پزانتزهائي حاوي شرط مورد بررسي قرار داده مي شود.و در
پي آن،دستورات داخل حلقه، كه با علامتهاي كروشه({}) احاطه شدهاند.قرار مي گيرند.
3ـ8)حلقههاي do…while:
در جـاوااسكـريپت 1.2 ، نوع سومي از حلقه ها، بنام حلقه هاي do…while نيز معرفي شدند. اين حلقه ها، مشابه حلقه هاي معموليwhile هستند.بايك تفاوت كه شرط اين حلقه هابه جاي اينكه درابتداي حلقه بررسي شود در انتهاي آن مورد ارزيابي قرار مي گيرد.
اشياء درون ساخت مرورگر:
در اين قسمت، با در مبحث مهم و پيشرفته در جاوااسكريپت، يعني اشياء وكنترلگر هاي حوادث آشنا خواهيد شد.
1ـ9)اشياء چيستند؟
اشياء(Objects) به مااجازه ميدهند باانواع مختلفي از داده ها(خاصيتها) (Properties) و توابعي كه ميتوانند بر روي اين داده ها كار كنند(متدها) (Metods) ، بسادگي و درقالب يك عنصر واحد سروكارداشته باشيم.در اين ساعت. با اشياء Mach و Date آشنا خواهيد شد، اما قبل از آن اجازه بدهيدنگاه مختصري به نقش اشياء در جاوااسكريپت و روش كار با آنها بيندازيم.
1ـ1ـ9)خلق اشياء :
براي هر شيء، ميتوان تابع خاصي بنام تابع “سازنده” (Constructor) در نظر گرفت كه ميتواند آن شيء
را خلق (ايجاد) نمايد. مثلاً، جاوااسكريپت شامل يك تابع درون ساخت (Built-in) ، به نام String ميباشد
كه به منظورايجاداشياء String بكار برده ميشود. بنابراين،يك متغير رشتهاي راميتوان به ترتيب زير نيز خلق كرد:
myname=new String (“Figby”);
دستور new، به مفسر جاوااسكريپت ميفهماند كه بايد يك شيء جديد،ويابه زبان عمليتر،نمونه(Instance) جديدي از شيء String خلق كند. اين نمونه جديد، حاوي مقادير Figby بوده و در متغير myname ذخيره خواهد شد.
اين روش ساخت اشياءراميتوانيدبراي خلق اشياءArray,Date,String وهمچنين اشيايي كه خودتان تعريف ميكنيد، بكار ببريد.
2ـ9)خاصيتهاي اشياء و مقادير:
هر شيء ميتوانديك يا چندخاصيت داشته باشد. هر خاصيت،متغيريست كه درقالب يك شيء ذخيره ميشود. بنابراين، هر خاصيت ميتواند يك “مقدار” داشته باشد.خاصيتها،همانند متغيرهاي عددي جـاوااسكـريپت، هر نوع دادهاي را ميتوانند ذخيره كنند.
در طول قسمتهاي گذشته اين تحقيق،معدودي ازخاصيتهاي اشياء، از جمله خاصيت length رشتهها و آرايهها
را در اسكـريپتهاي خود بكار بردهايد. بطور كلي، براي دسترسي به يك خاصيت، ابتدا نام شيء مربوطه نوشته
و سپس، با قرار دادن يك نقطه بعد از آن، نام خـاصيت مورد نظر را مينويسيم. مثلاً عبارت زير به طول آرايه names (خاصيت length آن) اشاره دارد:
names.length
خاصيتهاي اشياء، ميتوانند خود حاوي يك شيء باشند. براي مثال هر يك از عناصر يك آرايه را ميتوان يك نوع خاصيت انست كه با انديس مناسب در آن آرايه مشخص ميشوند. براي مثال اگر آرايه names، حـاوي تعدادي متغير رشتهاي باشد،آرايـهاي ازاشياء String خواهد بود. طول اولين عنصر از چنين آرايهاي به ترتيب
زير مشخص ميشود:
names[0].length
3ـ9)گرد كردن اعداد:
شيء Match، داراي سه متد كاملاً مفيد، براي گرد كردن يك عدد اعشاري، به عدد صحيح قبل، و يا بعد ازآن ميباشد:
1.Math.ceil(): يك عدد را به عدد صحيح بعد از آن گرد ميكند.
2.Match.floor(): يك عدد را به عدد صحيح قبل از آن گرد ميكند.
3.Match.round: يك عدد را به نزديكترين عدد صحيح گرد ميكند.
4ـ9)خلق اعداد تصادفي :
يكي ديگر از متدهاي مهم و مفيد شيء Match، متد Match.rundom ميباشد كه يك عدد تصـادفي بين (0و1)خلق ميكنند. اين متد به هيچ پارامتري نياز ندارد.
5ـ9)كار با تاريخها :
شيء Date، يكي ديگر از اشياء درون سـاخت مرورگـر است كه به كمك آن ميتوان به راحتي با تاريخهـا
و مقاديرزماني سروكار داشت. به منظور كار با تاريخها، كافيست يك شيءDate خلق كنيد تابتوانيداز متدهاي مربوط به آن استفاده نماييد.
مدل شيئي سند (DOM) :
اشياء ميتوانندانواع مختلفي ازدادههاراذخيره كنند. به هرحال باوجود گستردگي مبحث اشياء در جاوااسكريپت، اشياء وابسته به مرورگر در مدل شيء سند (DOM) بيش از ساير اشياء بكار گرفته ميشوند. با استفاده از اين اشياء، ميتوان به صفحات وب، پنجرههاي مرورگر، و اسنادي كه در آنها بار ميشوند دسترسي داشت.
در اين قسمت به بررسي مراتب اشياء در مدل شيء سند خواهيم پرداخت.
1ـ10)درك مدل شيئي سند :
يكي از مزاياي جاوااسكريپت (حتي نسبت به زبانهاي پيشرفتهاي مانند جـاوا)، اين است كه اسكـريپتهاي اين زبان ميتوانند رفتار مرورگر را كنتـرل كنند. براي مثال، اين اسكـريپتها ميتوانند يك صفحه وب جديد را در مرورگـر بار كنند. با عنـاصر مختلف پنجره مرورگر و سند وب كار كنند، و يا يك پنجره جديد را باز نمايند.
جاوااسكريپت،بمنظوردسترسي به مرورگر و اسناد وب، از سلسله مراتبي ازاشياءپدروفرزند(Parent&child) استفاده ميكند كه «مدل شيئي سند» (DOM
"Document Object Model") يا «اشياء وابسته به مرورگر» ناميده ميشوند. اين اشياء ساختاري درختي شكل را تشكيل داده و هر يك از آنها نمـاينده قسمتي از صفـحه وب ميباشد. همانند ساير اشياء در جاوااسكريپت، اشياء DOM ميتواند نماينده يك پنجره، يك سند، يا يك تصوير باشد. همانند ساير اشياء در جاوااسكريپت، اشياء مشخصات صفحه وب و سندخاصيت(Property)يا متد(Method) باشند.خاصيتهاي اين اشياء، مشخصات صفحه وب وسند مربوطه را در بردارند و متدهاي آنها،
به منظور كار با قسمتهاي مختلف يك صفحه وب در دسترس قرار داده شدهاند.
همانطـوركه اشاره شد، اشياء مدل شيئي سند، در قالب سلسلهمراتبي از اشياء در نظر گرفته ميشوند كه شيء
رده بالاتر، پدر(Parent) اشياءرده پايينترناميده ميشود.اشياء رده پايينتررافرزندان شيءرده بالاتر مينامند.
هويت هر شيء، بر اساس موقعيت آن در اين سلسله مراتب شناخته ميشود. بعبارت ديگر، به منظور ارجـاع
به يك شيء بايد نام آنرا پس از نام اشياء پدر آن قرار داده و آنها را با علامتهاي نقطه (.) از يكديگرجدا كرد. براي مثال جاوااسكريپت هرتصويررا در قالب يك شيءوبعنوان يكي ازفرزندان شيءducumentذخيره ميكند. بنابراين جهت ارجاع دادن به تصويري بنام image 9 بايد نوشت:
window.ducument.image 9
شيء window، بالاترين رده از اشياء DOM را تشكيل ميدهد.
شيء window :
در بالاترين رده ا زاشياء وابسته به مرورگر، شيء window قرار گرفته كه نماينده يك پنجره مرورگر ميباشد. شما در طول ساعات گذشته، تعدادي از خاصيتها و متدهاي اين شيء را بكار بردهايد:
1.از خاصيت window.status براي تغيير محتويات نوار وضعيت (Status Bar) استفاده كردهايد.
2.متدهاي window.prompt , window.confirm , window.alert را به منظور ايجـاد پنجرههاي گفتگو بكار بردهايد.
كاربر ممكن است در يك زمان چندين پنجره مرورگر را باز كرده باشد. بنابراين چندين شيءwindow ممكن است بصورت همزمان وجود داشته باشند. هر شيء window، معرف يك پنجره مرورگر است. زيـرصفحهها (Frames) نيز در قالب اشياء window در نظر گرفته ميشوند.