اسکريپت های سمت سرويس گيرنده در برنامه های وب
اسکريپت های سمت سرويس گيرنده در برنامه های وب
• کنترل پنجره مرورگر . برای کنترل مرورگر سرويس گيرنده ، نمی توان از کدهای نوشته شده سمت سرويس گيرنده ، استفاده نمود . باز نمودن پنجره ، focus نمودن بر روی يک پنجره ، حرکت بين فريم ها ، حرکت بين history و ساير عمليات مشابه می بايست از طريق اسکريپت های سمت سرويس گيرنده ، انجام شود.
• پاسخ فوری به رويدادهائی نظير Mouse-over ، کدهای نوشته شده سمت سرويس دهنده ، قادر به پاسخگوئی به رويدادها ، صرفا" پس از post back صفحه برای سرويس دهنده می باشند . کدهای نوشته شده سمت سرويس گيرنده ، قادر به پاسخگوئی به رويدادهای محقق شده در صفحه بلافاصله پس از تحقق رويدادها ، خواهند بود .
• اجرای برنامه سرويس گيرنده پست الکترونيکی . در اين رابطه می توان با استفاده از پروتکل mailto ، يک لينک را بصورت زير ايجاد نمود :
Mailto Protocol |
<A href="mailto:Info@Srco.ir?Subject=Send mail from client &Body= This email sent from client ." > |
• بخش های متفاوت پيام ، با استفاده از کليدهائی که توسط پروتکل mailto حمايت می گردند ، مشخص می شود . کليدهای فوق ، بعنوان يک query String بوده و توسط علامت & ( ampersands ) ، از يکديگر متمايز می گردند . شکل عمومی پروتکل mailto بصورت زير است :
mailto protocl syntax |
mailto:address[?key=string][&key=setting] |
• کليدهای حمايت شده توسط mailto عبارتند از : SUBJECT , CC , BCC ,BODY . پروتکل mailto برای ارسال فايل های ضميمه ، کليدی را ارائه ننموده است .
• تمامی مرورگرها ، حمايت يکسان و مشابهی را از اسکريپت ها ارائه نمی نمايند .
• مرورگر اينترنت مايکروسافت (IE) ، صرفا" از VBScript حمايت نموده و ساير مرورگرها از آن حمايت نمی نمايند .
• استفاده از اسکريپت ها ، چالش های امنيتی خاص خود را بدنبال خواهد داشت .
با توجه به اينکه تمامی مرورگر ، از اسکريپت ها حمايت نمی نمايند ، می بايست قبل از نمايش صفحاتی که شامل اسکريپت های سمت سرويس گيرنده می باشند ، توانائی آنان بمنظور تفسير وو اجرای اسکريپت ها ، بررسی گردد . کد زير ( روتين مربوط به رويداد Page_Load ) ، بررسی لازم در خصوص توانمندی يک مرورگر در جهت حمايت از اسکريپت ها را انجام و در صورتيکه مرورگر کاربر دارای قابليت های لازم بمنظور استفاده از اسکريپت ها نباشد ، کاربر به صفحاتی ديگر متناسب با شرايط موجود ، هدايت می گردد.
Check browser Support Scripts |
Private Sub Page_Load ( ByVal Sender As System.Object , &_ByVal e As System.EventArgs ) Handles Mybase.Load |
يکی از نکات مهم در رابطه با استفاده از اسکريپت ها ، چالش های امنيتی مرتبط با آنان می باشد . در اين رابطه دو حالت متفاوت می تواند وجود داشته باشد :
• استفاده از اسکريپت ها ، ايمن نمی باشد ، چراکه امکان مشاهده و يا تکثير آنان توسط کاربران ، وجود خواهد داشت .
• اسکريپت ها ، دارای استعداد لازم بمنظور توزيع و نشر ويروس های کامپيوتری بوده و همين امر باعث می گردد که برخی کاربران ،امکان Scripting درمرورگر خود را غيرفعال نمايند.
خصلت VBScript و JavaScript مربوط به شی Browser ، حتی در صورتيکه Scripting غيرفعال باشد ، مقدار True را برمی گرداند . بمنظور بررسی وضعيت Scripting در يک مرورگر ( فعال و يا غير فعال بودن ) ، می توان با اجرای يک اسکريپت نمونه ، از وضعيت فوق ، آگاه و متناسب با آن عمليات مورد نظر را انجام داد .تگ های HTML زير ، يک اسکريپت را اجراء و در صورت فعال بودن Scripting ، کاربر به صفحه ای خاص ( Scripts.aspx) ، هدايت می گردد . در صورتيکه ويژگی فوق ، غير فعال شده باشد ، پيامی مبنی بر غيرفعال بودن پتانسيل فوق ، نمايش داده می شود .
Check Scripting status |
<html> |
انتخاب يک زبان اسکريپت
• زبان های اسکريپت ترجمه نمی گردند. اين نوع زبان ها در زمان اجراء توسط مرورگر تفسير و در ادامه اجراء خواهند شد .
• کليد واژه های اسکريپت ، زيرمجموعه ای ايمن از زبان های مادر خود می باشند . اسکريپت ها ، امکان ايجاد و يا حذف فايل هائی را بر روی فضای ذخيره سازی کاربر ( مثلا" هارد ديسک ) و يا انجام عملياتی که باعث بروز اختلال در کامپيوتر کاربر می گردد ، را نخواهد داد .
VBScript و JScript تقريبا" معادل يکديگر می باشند . تفاوت عمده ،در گرامر و کليد واژه های آنان می باشد . برنامه نويسان ويژوال سی شارپ ، تمايل بيشتری به استفاده از Jscript را دارند ،چراکه Jscript شباهت زيادی به زبان سی دارد. برنامه نويسان ويژوال بيسيک ، تمايل بيشتری به استفاده از VBScript دارند ، چراکه VBScript شباهت زيادی به ويژوال بيسيک دارد . مرورگر IE ، صرفا" VBScript را حمايت نموده و در صورتيکه ، ضروری است که برنامه بر روی ساير مرورگرها نيز کار کند ،می بايست از JScript استفاده گردد .
آشنائی با DOM
افزودن اسکريپت های Inline
Use a Script |
<HTML> |
از اسکريپت های Inline ، همچنين می توان بعنوان خصلت عناصر HTML بمنظور انجام عملياتی خاص ، استفاده نمود . ( نظير کنترل HTML Button ) .تگ های HTML زير يک Button راايجاد که باعث فعال نمودن يک صفحه Help در پنجره ای جديد می گردد
Inline Script as attribute of HTML elements |
<Button id="butHelp" onCLick="Window.open('help.aspx' ,'help','heigh=200 , width=300')" Help </button> |
اسکريپت فوق ، مستقل از زبان اسکريپت بوده می باشد( دستور فوق ، در صورتيکه مقدار خصلت Language مربوط به عنصر <body> ، به مقدار VBScript و يا Jscript مقداردهی نشده باشد، نيز معتبر بوده و اجراء خواهد شد). برای استفاده از يک زبان اسکريپت ( بجزء مقداری که بهمراه عنصر <body> مشخص شده است ) ، می بايست از خصلت Language مربوط به عنصر <Script> ، برای مشخص نمودن زبان مورد نظر استفاده نمود . کد زير ، نمونه ای در اين رابطه را نشان می دهد :
Using element's language attribute |
<HTML> |
پاسخ به رويدادها با استفاده از روتين های نوشته شده توسط اسکريپت ها
با استفاده از اسکريپت ها ، می توان روتين هائی را بمنظور پاسخگوئی در مقابل رويدادهای صفحه ، تعريف نمود( لود شدن پنجره ، کليک نمودن يک Button ، حرکت موس بر روی اشياء موجود بر روی صفحه ) . برای ايجاد يک روتين اسکريپت پاسخگو در مقابل يک رويداد ، مراحل زير را دنبال می نمائيم :
• با استفاده از ويژوال استوديو دات نت ، صفحه ای را که قصد استفاده از اسکريپت های سمت سرويس گيرنده در آن وجود دارد را ايجاد می نمائيم . صفحه فوق ، می تواند يک فرم وب ( فايلی با انشعاب aspx ) و يا يک صفحه HTML ( فايلی با انشعاب htm ) باشد .
• به وضعيت نمايش HTML در رابطه با صفحه ، سوئيچ می نمائيم .
• با استفاده از ليست Drop-Down ( قسمت سمت چپ بالای صفحه ) شی مورد نظری را که قصد اضافه نمودن يک رويداد مرتبط با آن وجود دارد راانتخاب می نمائيم :
• با استفاده از Drop-Down ( قسمت سمت راست بالای صفحه ) ، رويداد مرتباط با شی انتخاب شده را مشخص می نمائيم :
• در ادامه ويژوال استوديو ، يک بلاک اسکريپت ايجاد می نمايد (يک روتين رويداد خالی )
A Script Block |
<Script id=ClientEventHandlersVBS Language=vbscript> |
کد موجود در روتين رويداد، پس از بروز رويداد در صفحه، اجراء خواهند شد. کد زير ، باعث تغيير شکل موس بصورت علامت دست ، می گردد(زمانيکه کاربر موس را از روی Button عبور می دهد ).
Switch mouse cursor to hand symbol |
Sub butRunScript_onmouseover |
با استفاده از روتين های مرتبط با رويدادها ی سمت سرويس گيرنده ، می توان مجموعه ای گسترده از رويدادها را تشخيص داد. (فشردن کليدها ، رويدادهای حرکت موس بر روی اشياء ، کليک ها ، لودها ، Unload ها ) . برخلاف رويدادهای سمت سرويس دهنده ، رويدادهای سمت سرويس گيرنده آرگومان ها را مستقيما" ارائه نمی نمايند . اين نوع از رويدادها در مقابل ، از متد event مربوط به شی window بمنظور دريافت مقادير مورد نظر، استفاده می نمايند. کد زير ، رويداد مرتبط با mousemove بوده که باعث نمايش مختصات Cursor در Status bar مربوط به مرورگر، می شود.
Display coordinates of cursor |
Sub document_onmousemove |
{{Fullname}} {{Creationdate}}
{{Body}}