عنوان
|
نويسنده
|
مشاهده
|
تعداد
آراء |
امتياز
|
اسکريپت های سمت سرويس گيرنده در برنامه های وب |
مديريت وب |
9492 |
4 |
3.8 |
با توجه به جایگاه داده در عصر حاضر و لزوم نگاه جامع به این مقوله مهم ، بر آن شدیم تا محوریت فعالیت های خود را بر روی این موضوع متمرکز نمائیم . از این رو گروه فابک با شعار فناوری اطلاعات برای کسب وکار شکل گرفت و خدمات خود را از طریق سایت www.fabak.ir به مخاطبان محترم عرضه می نماید
 |
اسکريپت های سمت سرويس گيرنده در برنامه های وب
اسکريپت های سمت سرويس گيرنده در برنامه های وب
ASP.NET ، مجموعه ای کامل از
ابزارهای برنامه نويسی را بمنظور ايجاد برنامه های وب که بر روی سرويس دهنده
اجراء می گردند، ارائه نموده است
. ممکن است اين سوال مطرح گردد که
ضرورت استفاده از اسکريپت ها بر روی سرويس گيرنده
چيست و چرا می بايست از آنان در برنامه های وب استفاده گردد . اسکريپت ها ، امکان
دستيابی مستقيم به مرورگر سرويس گيرنده را
فراهم نموده و می توان واکنش لازم در خصوص رويدادهائی که در سطح مرورگر سرويس
گيرنده،محقق می گردند را بلافاصله و بدون ضرورت يک Post back
به سرويس دهنده ، انجام داد. با بکارگيری اسکريپت ها ، عملياتی را می توان انجام
داد که امکان اجرای آنان از طريق سرويس دهنده ، وجود نخواهد داشت . بعنوان
نمونه می توان به موارد زير اشاره نمود :
-
کنترل پنجره
مرورگر . برای کنترل مرورگر سرويس گيرنده ، نمی توان از کدهای نوشته شده سمت
سرويس گيرنده ، استفاده نمود . باز نمودن پنجره ، 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
If Request.Browser.VBScript Then
Response.Redirect("VBScript.htm")
ElseIF Request.Browser.JavaScript Then
Response.Redirect (JScripts.htm")
Else
Response.Redirect("Noscript.htm")
End Sub
|
يکی از نکات مهم در رابطه با
استفاده از اسکريپت
ها ، چالش های امنيتی
مرتبط با آنان می باشد . در اين رابطه دو حالت متفاوت می تواند وجود
داشته باشد :
-
استفاده از اسکريپت ها ، ايمن نمی
باشد ، چراکه امکان مشاهده و يا تکثير آنان توسط کاربران ، وجود خواهد داشت .
-
اسکريپت ها ، دارای استعداد
لازم بمنظور توزيع و نشر ويروس های کامپيوتری بوده و همين امر باعث می گردد که برخی
کاربران ،امکان
Scripting درمرورگر خود را غيرفعال نمايند.
خصلت VBScript و JavaScript
مربوط به شی Browser ، حتی در صورتيکه
Scripting غيرفعال باشد ، مقدار True
را برمی گرداند . بمنظور بررسی وضعيت Scripting در
يک مرورگر ( فعال و يا غير فعال بودن )
، می توان با اجرای يک اسکريپت نمونه ، از وضعيت فوق ، آگاه و متناسب
با آن عمليات مورد نظر را انجام داد .تگ های HTML زير ،
يک اسکريپت را اجراء و در صورت فعال بودن Scripting ،
کاربر به صفحه ای خاص ( Scripts.aspx) ، هدايت می گردد .
در صورتيکه ويژگی فوق ، غير فعال شده باشد ، پيامی مبنی بر غيرفعال بودن پتانسيل
فوق ، نمايش داده می شود .
Check Scripting status |
<html>
<script>
window.navigate("scripts.aspx")
</script>
<head>
<title>Scripts</title>
</head>
<Body>
<h2> Scripting is turned off .</h2>
</Body>
</html>
|
انتخاب يک زبان اسکريپت
اسکريپت های سمت سرويس گيرنده
،با استفاده از
VBScript,JScript و يا جاوااسکريپت نوشته
می گردند . زبان های اسکريپت های دارای تفاوت
های مشهودی نسبت به زبان های کمپايل شده می باشند :
-
زبان های
اسکريپت ترجمه نمی گردند. اين نوع زبان ها در زمان اجراء توسط
مرورگر تفسير و در ادامه اجراء خواهند شد .
-
کليد واژه های
اسکريپت ، زيرمجموعه ای ايمن از زبان های مادر خود می باشند . اسکريپت ها ،
امکان ايجاد و يا حذف فايل هائی را بر روی فضای ذخيره سازی کاربر ( مثلا" هارد ديسک
) و يا انجام عملياتی که باعث بروز اختلال در کامپيوتر کاربر می گردد ، را
نخواهد داد .
VBScript
و JScript تقريبا"
معادل يکديگر می باشند . تفاوت عمده
،در گرامر و کليد واژه های آنان می باشد .
برنامه نويسان ويژوال سی شارپ ، تمايل بيشتری به استفاده از
Jscript را دارند ،چراکه Jscript
شباهت زيادی به زبان سی دارد. برنامه نويسان ويژوال بيسيک ، تمايل بيشتری به
استفاده از VBScript دارند ، چراکه
VBScript شباهت زيادی به ويژوال بيسيک دارد . مرورگر IE
، صرفا" VBScript را حمايت نموده و در صورتيکه
، ضروری است که برنامه بر روی ساير مرورگرها نيز کار کند ،می بايست از JScript
استفاده گردد .
آشنائی با DOM
DOM از کلمات Document Object Model
، اقتباس و اشياء ارائه شده توسط
مرورگر برای Scripting را ايجاد می نمايد . با استفاده
از اشياء ايجاد شده ، امکان کنترل پنجره مرورگر ، صفحه جاری و اشياء موجود در يک
صفحه ، فراهم می گردد.پرداختن
به اشياء DOM و نحوه استفاده از آنان در حوصله اين مقاله
نبوده و می توان در اين رابطه از مقاله :
DOM چيست ، استفاده نمود.
افزودن اسکريپت های
Inline
صفحات وب می توانند از اسکريپت های Inline
بعنوان بخشی از محتويات خود و يا بعنوان يک روتين که در پاسخ به تحقق رويدادی خاص ،
اجراء می گردند، استفاده نمايند. اسکريپت های Inline ،
بلافاصله پس از برخورد مرورگر با آنان ، اجراء خواهند شد. در صورتيکه يک اسکريپت
Inline به يک عنصر موجود بر روی صفحه مراجعه می
نمايد ، عنصر فوق ، می بايست قبل از اسکريپتی که به آن مراجعه می نمايد ، استفاده
گردد.تگ های HTML زير ، دو Text Box
را نمايش و با استفاده از يک اسکريپت ، Cursor را
به Text Box دوم هدايت ، می نمايد .
Use a Script |
<HTML>
<Body Language=
"Vbscript" >
<form id="Form1" method="post" runat="server">
<P>
<asp:TextBox id="txtFirstName" Runat="server"></asp:TextBox>
</P>
<P>
<asp:TextBox id="txtLastName" Runat="server"></asp:TextBox>
</P>
<Script> Window.document.all ( "txtLastName").focus( ) </Script>
</form>
</body>
</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>
<Script Language="vbscript">
For
i = 1 to 6
document.write("<h"& i & ">")
document.write("H" & i )
document.write( "</h" & i & "><br>")
Next
</Script>
</HTML>
|
پاسخ به
رويدادها با استفاده از روتين های نوشته شده توسط اسکريپت
ها
با استفاده از اسکريپت ها ، می توان روتين هائی را بمنظور پاسخگوئی در
مقابل رويدادهای صفحه ، تعريف نمود( لود شدن پنجره ، کليک نمودن يک
Button ، حرکت موس بر روی اشياء موجود بر روی صفحه
) . برای ايجاد يک روتين اسکريپت پاسخگو در مقابل يک رويداد ، مراحل زير را دنبال
می نمائيم :
-
با استفاده از ويژوال استوديو دات نت
، صفحه ای را که قصد استفاده از اسکريپت های سمت سرويس گيرنده در آن وجود دارد را
ايجاد می نمائيم . صفحه فوق ، می تواند يک فرم وب ( فايلی با انشعاب
aspx ) و يا يک صفحه HTML (
فايلی با انشعاب htm ) باشد .
-
به وضعيت نمايش
HTML در رابطه با صفحه ، سوئيچ می نمائيم .
-
با استفاده از ليست
Drop-Down ( قسمت سمت چپ بالای صفحه ) شی مورد نظری
را که قصد اضافه نمودن يک رويداد مرتبط با آن وجود دارد راانتخاب می نمائيم :


کد موجود در روتين رويداد، پس از بروز
رويداد در صفحه، اجراء خواهند شد. کد زير ، باعث تغيير شکل موس بصورت علامت دست ،
می گردد(زمانيکه کاربر موس را از روی Button عبور می دهد
).
Switch mouse cursor to hand symbol |
Sub
butRunScript_onmouseover
butRunScript.Style.Cursor = "hand"
End Sub
|
با استفاده از روتين های مرتبط با
رويدادها ی سمت سرويس گيرنده ، می توان مجموعه ای گسترده از رويدادها را
تشخيص داد. (فشردن کليدها ، رويدادهای حرکت موس بر روی اشياء ، کليک ها ، لودها ،
Unload ها ) . برخلاف رويدادهای سمت سرويس دهنده ،
رويدادهای سمت سرويس گيرنده آرگومان ها را مستقيما" ارائه نمی نمايند . اين نوع از
رويدادها در مقابل ، از متد event مربوط به شی
window بمنظور دريافت مقادير مورد نظر، استفاده می
نمايند. کد زير ، رويداد مرتبط با mousemove بوده که
باعث نمايش مختصات Cursor در
Status bar مربوط به مرورگر، می شود.
Display coordinates of cursor |
Sub
document_onmousemove
window.status = window.event.clientX & , &
window.event.ClentY
End Sub
|
کد موجود در روتين های رويداد
سمت سرويس گيرنده ، قادر به دريافت و تنظيم مقادير نمايش داده شده در کنترل های
سرويس دهنده و HTML موجود بر روی يک صفحه نيز می باشند .
بدين ترتيب ، امکان دريافت داده از کاربر و ارائه پاسخ لازم بدون نياز به يک
Post back ،فراهم می گردد.