جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
اسکريپت هاي سمت سرويس گيرنده در برنامه هاي وب
-(7 Body) 
اسکريپت هاي سمت سرويس گيرنده در برنامه هاي وب
Visitor 561
Category: دنياي فن آوري
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 ،فراهم مي گردد.
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image