اسکريپت های سمت سرويس گيرنده در برنامه های وب

ASP.NET ، مجموعه ای کامل از ابزارهای برنامه نويسی را بمنظور ايجاد برنامه های وب که بر روی سرويس دهنده اجراء می گردند، ارائه نموده است . ممکن است اين سوال مطرح گردد که ضرورت استفاده از اسکريپت ها بر روی سرويس گيرنده چيست و چرا می بايست از آنان در برنامه های وب استفاده گردد . اسکريپت ها ، امکان دستيابی مستقيم به مرورگر سرويس گيرنده را فراهم نموده و می توان واکنش لازم در خصوص رويدادهائی که در سطح مرورگر سرويس گيرنده،محقق می گردند
دوشنبه، 21 بهمن 1387
تخمین زمان مطالعه:
موارد بیشتر برای شما
اسکريپت های سمت سرويس گيرنده در برنامه های وب
اسکريپت های سمت سرويس گيرنده در برنامه های وب
اسکريپت های سمت سرويس گيرنده در برنامه های وب

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 ( قسمت سمت چپ بالای صفحه ) شی مورد نظری را که قصد اضافه نمودن يک رويداد مرتبط با آن وجود دارد راانتخاب می نمائيم :

• با استفاده از Drop-Down ( قسمت سمت راست بالای صفحه ) ، رويداد مرتباط با شی انتخاب شده را مشخص می نمائيم :
• در ادامه ويژوال استوديو ، يک بلاک اسکريپت ايجاد می نمايد (يک روتين رويداد خالی )

A Script Block

<Script id=ClientEventHandlersVBS Language=vbscript>
<!--
   Sub butRunScript_onmouseover
   End Sub
-->
</Script>

کد موجود در روتين رويداد، پس از بروز رويداد در صفحه، اجراء خواهند شد. کد زير ، باعث تغيير شکل موس بصورت علامت دست ، می گردد(زمانيکه کاربر موس را از روی 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 ،فراهم می گردد.




نظرات کاربران
ارسال نظر
با تشکر، نظر شما پس از بررسی و تایید در سایت قرار خواهد گرفت.
متاسفانه در برقراری ارتباط خطایی رخ داده. لطفاً دوباره تلاش کنید.
مقالات مرتبط