SlideShare a Scribd company logo
1 of 7
Download to read offline
Tutorial:Programming




                              Understanding
                                JavaScript
        JavaScript is not related to Java; JavaScript and JScript are both implementations of a notional
         standard language called ECMAScript. We explain the origin of these related languages and
                               show how they can be used to enhance Web pages.
                                       Concluding our two-part article.

                                                                                                                      By Mike Lewis




     O         ne of the nice things about de-
               veloping in JavaScript is that
               you don’t need to buy any
     special tools: you already have every-
                                                 earlier. You can also specify ”JScript”
                                                 as the language, in which case it will be
                                                 ignored by all versions of Navigator
                                                 and Opera.
                                                                                             displaying the text which appears be-
                                                                                             tween them. However, the JavaScript
                                                                                             interpreter correctly treats the en-
                                                                                             closed text as code and executes it as
     thing you need to get started. You can          In most cases, however, it is better    normal. (The double forward slash is
     write the code using a simple text edi-     not to specify a version unless you         not officially part of the end-of-com-
     tor, and you use your normal Web            know for sure which browsers will be        ment tag, but is required in this context
     browser to test it. You could also write    used. If necessary, your code can de-       by Netscape Navigator.)
     the code using any Web authoring tool       tect the browser version and act ac-           If you want to include a comment
     which lets you directly edit the HTML;      cordingly.                                  within JavaScript itself, you have two
     the authoring tool does not need to be          If the browser supports no scripting    choices. If the comment occupies a sin-
     specifically JavaScript-enabled.            language at all, it will simply disregard   gle line, start it with //. To write a
        You write JavaScript code inside a       the <script> tag. Unfortunately, this       multi-line comment, start the com-
     normal HTML page. To separate the           means that whatever appears between         ment with /* and end it with */. Figure
     code from the rest of the page, you         <script> and </script> will be treated      2 includes examples of both these
     delimit it with <script> and </script>      as normal HTML text. The actual code        styles.
     tags. Everything inside those tags is       - such as the document.write state-            You might want your HTML docu-
     interpreted as script, everything out-      ment in the above example - will there-     ment to take some special action if the
     side as HTML. The script tag includes       fore be displayed as part of the            browser does not support JavaScript,
     a Language attribute which identifies       document, which is not what you             or if the user has chosen to disable it.
     the specific scripting language: JavaS-     want.                                       For example, you might show a mes-
     cript in this case.                             You can prevent this by delimiting      sage which warns that the page will
        The following code displays a sim-       the script with the following tags: <!—     not be displayed properly. You can do
     ple message in the Web browser:             and //—> (see Figure 2, where a more        this by means of the <noscript> and
                                                 complete version of the Hello World         </noscript> tags. Any HTML appear-
     <script language=”JavaScript”>              example uses these conventions).            ing between these tags will be dis-
     document.write(“Hello World”)               HTML treats these tags as comment           played if, and only if, scripting is not
     </script>                                   delimiters and therefore refrains from      currently available. For example:

         When the browser loads the page it
                                                   Browser                          Supports
     will work through the contents in se-         Navigator 2.0                    JavaScript   1.0
     quence, from top to bottom, executing         Navigator 3.0                    JavaScript   1.1
     the script when it encounters it.             Navigator 4.0                    JavaScript   1.2
         If you want to restrict the code to a     Navigator 4.06 and above         JavaScript   1.3
     specific version of JavaScript, add the       IE 3                             JavaScript   1.0, JScript 3.0
     version number to the language name.          IE 4                             JavaScript   1.1, JScript 3.1
                                                   IE 5                             JavaScript   1.2, JScript 5.0
     For example, if you specify the lan-
                                                   Opera 3.21 and above             JavaScript   1.1
     guage as “JavaScript1.1”, the code will
     be ignored by Navigator 2.0 and ear-
     lier and by Internet Explorer 3.0 and                         Figure 1 - Browsers which support JavaScript.



Update 140 (July 2000) Page 17                   PC Support Advisor                                                            File: T0526.3
                                                        www.itp-journals.com
Tutorial:Programming




     <noscript>                                   pear between the <script> and                  on the fly. For example, A=1 creates
                                                  </script> tags. To reference the JS file       a numeric variable; A=”Hello”
        This page requires JavaScript.            from within your HTML document,                changes the same variable to a
                                                  use the SRC attribute in the <script>          string.
     </noscript>                                  tag. For example, if your JavaScript         q Data types: the following types are
                                                  code is in a file called HELLO.JS, you         supported: number (integer and
     JS Files                                     would reference it as follows:                 floating-point), boolean (true, false)
                                                                                                 and string (delimited with either
        Some JavaScript programmers pre-          <script language=”JavaScript”                  single- or double-quotes).
     fer to keep their code separate from the     SRC=”hello.js”>                              q Special values: the value null is an
     rest of the document. This makes it          </script>                                      “empty” value which is not equal to
     easier to read the script without being                                                     any other value that the variable
     distracted by HTML tags, and it can             The filename in the SRC attribute           can hold. The value undefined is
     also help with re-using the code in          can include a directory path or a URL.         similar, but it evaluates to the de-
     other documents.                                The code in the JS file is executed         fault value for the appropriate data
        To achieve this, write your JavaS-        instead of - not in addition to - any code     type.
     cript in a separate text file, and save it   between the <script> and </script>           q Operators: JavaScript supports
     with the extension JS. The file should       tags. If there is any non-script HTML          around three dozen operators, in-
     contain JavaScript code only - that is,      in the JS file, an error is generated.         cluding many that will be familiar
     the text which would otherwise ap-                                                          to C programmers, such as ++ (in-
                                                  Language Fundamentals                          crements a value by one) and +=
                                                                                                 (performs addition and assigns the
       <html>                                         JavaScript is not so very different        result).
       <head>                                     from C, Pascal, Basic, XBase and many
       <title>First Example</title>
                                                  similar procedural languages. Any            Data Conversion
       </head>
                                                  programmer who already knows one                JavaScript performs automatic con-
       <body>                                     of these languages will have no trouble      version between its various data types,
       <script language=”JavaScript”>             understanding JavaScript’s funda-            often in interesting ways. For example,
       <!—                                        mental language elements. For the            a boolean variable contains one of two
         document.write(“Hello World”)            next part of the article, I will give you    values: true or false. But it can legally
         // This is a 1-line comment
                                                  an overview of these elements, starting      be used in numeric expressions, in
          document.write(“<br>”)                  with some key points:                        which case true is considered to be
          /* You can include HTML                                                              equal to 1 and false to 0. In the follow-
              tags in the output. The             q White space: JavaScript is a free-         ing expression, a tax amount would be
              above inserts a line                  flowing language, in that the code         added to the total if the boolean vari-
              break */                              can include arbitrary spaces, tabs         able Taxable was true, but not if it was
                                                    and line feeds to improve readabil-        false:
          document.write(“Greetings”)
                                                    ity. There is no end-of-line delim-
                                                    iter.                                      Total = (Qty * Price) + (Taxable *
       // —> </script>
                                                  q Case-sensitivity: you must be care-        TaxAmount)
       </body>
       </html>                                      ful to observe the correct case when
                                                    referring to variables, functions, ob-        Similarly, if a string happens to con-
                                                    jects etc. For the most part, JavaS-       tain a number, it too can be used in
                 Figure 2 - Hello World             cript is case-sensitive.                   arithmetic expressions. Thus, the fol-
                example, with comments.           q Variable names: these may contain          lowing code is valid:
                                                    letters, digits and underscores, and
                                                    must not start with a digit. (They         Tax = “17”
       currDate = new Date()                        can also contain dollar signs, but         Gross = 100 + Tax
       TimeNow = currDate.getHours()                the ECMA standard recommends               Withhold = true * Tax
                                                    that these be reserved for use by
       if (TimeNow < 12)                                                                       Strings
         { Greeting = “Good Morning” }
                                                    automatic code generators.)
         else if (TimeNow < 18)                   q Declarations: you do not have to              JavaScript strings can contain C-
           Greeting = “Good Afternoon”              declare variables in advance, nor do       like escape characters, including t for
             else Greeting = “Good                  you need to explicitly specify their       tab, n or r for line feed or carriage-
             Evening”                               data types. A variable is created on       return (these two have the same effect)
                                                    the fly the first time that a value is     and  for backslash. But care is
       document.write(Greeting)
                                                    assigned to it, and its data type is       needed; HTML normally disregards
                                                    determined from the value. What’s          tabs and line feeds, so to use these
          Figure 3 - An if/else construct.          more, the variable can be re-typed         characters in displayed text you must



File: T0526.4                                     PC Support Advisor                                         Update 140 (July 2000) Page 18
                                                         www.itp-journals.com
Tutorial:Programming




                                                                                     JavaScript

     format the text with the HTML <PRE>              Arrays are always zero-based - that     in your code. Optionally, functions can
     style.                                       is, the first element’s subscript is 0.     receive parameters and return a result.
        Strings can also contain HTML for-        Array elements can contain any data         The result can be used just like any
     matting tags. As an example, the fol-        type, not necessarily the same type for     other value, for instance in an expres-
     lowing code displays three names,            all elements. An element can even con-      sion.
     each on a separate line, with the mid-       tain another array:                            For example, here is a function
     dle one in bold:                                                                         which returns the mean average of the
                                                  MyArray = new Array(20)                     two numbers which are passed to it as
     document.write(“Tomn<B>Dick<B>-             MyArray[5] = new Array(10)                  parameters:
     nHarry”)                                    MyArray[5][0] = “Hi”
                                                                                              function MeanAv(n1,n2)
     Arrays                                          You are not obliged to specify the       { return (n1+n2)/2 }
        Unlike simple variables, arrays           length of the array when you create it,
     must be explicitly declared before they      and your code can change the length            Note the use of braces to enclose the
     can be referenced. You declare an ar-        dynamically. In this example, the array     body of the function. These are man-
     ray with the operator new, like this:        will initially be of length zero:           datory, even if the function contains
                                                                                              only one statement.
     MyArray = new Array(20)                      Arr1 = new Array()                             JavaScript programmers usually
                                                                                              place their function definitions in the
        This creates an array called MyAr-           To increase the length, simply as-       document’s head - that is, between the
     ray with 20 elements. The elements           sign a value to an element beyond the       <HEAD> and </HEAD> tags. This is
     start life with no specific data type, and   end of the array:                           not obligatory, but it does ensure that
     their initial value is the special value,                                                the function is defined before it is
     undefined. To reference the elements,        Arr1[9] = “Greetings”                       called. This is especially important
     use square brackets:                                                                     where event-handlers are used (more
                                                  Program-Flow Constructs                     of this later). Figure 5 shows an exam-
     MyArray[3] = “Hello”                            JavaScript supports a range of           ple. This performs the same action as
                                                  branching and looping constructs,           the code in Figure 4, but it uses a sepa-
       for (i=1;i<7;i++){
                                                  similar to those found in other lan-        rate function to perform the actual out-
         tag1 = “<H“+i+”>”                        guages. You can use if/else or a switch     put.
         tag2 = “</H“+i+”>”                       statement to test conditions. Three
         Document.write(tag1+“Heading             constructs are available for executing a    Object Orientation
         level ”+i+tag2)}                         block of code repeatedly: for, while,
                                                  and do/while. The syntax of these con-         The language elements I have de-
                Figure 4 - A for loop.            structs closely resembles that of C.        scribed so far can be used to produce
                                                     Figure 3 shows a simple if/else con-     worthwhile JavaScript programs
                                                  struct. Note that I have used braces to     which can greatly enhance your Web
                                                  enclose the block of statements follow-     pages. However, the real power of
       <html>
                                                  ing the first test. These braces are in     JavaScript only becomes apparent
       <head>                                     fact optional if the block contains just    when you make use of two further
       <title>Function call                       one statement, as is the case here. Note    concepts: objects and events.
              example</title>                     also that, unlike in C, there is no semi-      JavaScript is not a pure object-ori-
       <script language=”JavaScript”>             colon at the end of the construct (al-      ented language. It does not let you
       <!—                                        though no harm is done if this is           create new classes through inheri-
       function ShowHeading(str,lev)
                                                  included).                                  tance, nor does it support the concept
       {document.write(“<H“+lev+”>-
        “+str+”</H“+lev+”>”)}                        For an example of a for loop, look at    of a class hierarchy. However, it does
       // —> </script>                            Figure 4. Here we are executing a           allow you to create new instances of
       </head>                                    document.write statement six times.         objects and to access their properties
                                                  Each time round the loop, we generate       and methods. More importantly, the
       <body>                                     a message consisting of the name of the     browser environment supplies a range
       <script language="JavaScript">
                                                  next consecutive HTML heading style         of pre-defined objects which let you
       <!—
       for (i=1;i<7;i++)                          (using the <Hn> and </Hn> tags). In         interact with Web pages in many use-
         ShowHeading(“Heading level ”-            each case, the message is formatted in      ful ways.
         +i,i)                                    the style in question.                         We have already used one of these
       // —> </script>                                                                        built-in browser objects: the docu-
       </body>                                    Functions                                   ment. The document object embodies
       </html>                                                                                the properties and methods of the
                                                     As you would expect, JavaScript
                                                  lets you define functions, which you        document currently loaded in the
            Figure 5 - A function call.           can subsequently call from elsewhere        browser window. When you issue a



Update 140 (July 2000) Page 19                    PC Support Advisor                                                            File: T0526.5
                                                         www.itp-journals.com
Tutorial:Programming




     document.write statement, you are in         an array can itself hold objects. For       cally performed by the user. For exam-
     fact calling the write method of the         example, the document object has a          ple, when the user clicks on a button,
     document object.                             property called links. This is an array,    the button-click event occurs; when a
         Other pre-defined browser objects        which in turn holds a set of objects,       document is loaded in a window, the
     include window, history and naviga-          each of which is of type link. Each link    window-load event occurs; and so
     tor. The various elements that can ap-       object is a reference to an instance of a   forth.
     pear in forms (text boxes, radio             hyperlink within the document. (Care           By writing “event handlers” you
     buttons, submit buttons etc) are also        is needed here: links, in the plural, is    can make your documents respond to
     objects. For details of these and other      the array; link, in the singular, is an     these events. Thus, if you wanted to
     browser objects, see Figure 6.               individual object within the array.)        prompt the user for confirmation be-
         JavaScript also lets you define en-         The following code iterates the          fore following a link, you could write
     tirely new object types and to create        links array and displays the URL asso-      an event handler for the link’s click
     instances of objects based on them.          ciated with each link contained in it:      event. The event handler would con-
     There are also several built-in object                                                   tain the code which prompts for con-
     types (built-in object types are not the     for (i=0;i<document.links.-                 firmation. The code would be executed
     same as built-in objects). For an exam-      length;i++)                                 whenever the user clicked on the link.
     ple, look back at Figure 3. The first line   document.write(document.links-                 The syntax for event-handlers is
     in this code creates an object called        [i].href)                                   somewhat different from the code that
     currDate, which is based on the built-                                                   we have seen so far. Each event is as-
     in Date object type.                            In the first line of this example, we    sociated with an HTML element.
         Although it might not be obvious,        use the length property of the links        When you write JavaScript code to re-
     JavaScript arrays are also objects.          array (remember, an array is also an        spond to an event, you do not place it
     When you declare an array, you are in        object) to determine how many hyper-        within the <script> and </script> tags.
     fact creating a new instance of an ob-       links exist in the document. In the sec-    Rather, you make it an attribute of the
     ject based on the built-in Array object      ond line, we display each individual        tag of the element to which it relates.
     type.                                        link object’s href property, which con-        For example, the following code
                                                  tains the target URL.                       displays an alert when the user clicks
     Object Syntax                                                                            on a link:
        The basic syntax for working with         Events
     objects is sometimes called dot nota-                                                    <p><a href=“www.whatever.com”
     tion. This simply means that, when              To a large extent, JavaScript is an      OnClick = “alert(‘You are leaving
     referring to a property or method, you       event-driven environment. An event          the page’)”>
     precede its name with that of the object     occurs as a result of some action, typi-    </a></p>
     that it belongs to, using a dot as a
     separator.                                     Object           Details
        For example, to change the current          navigator        The browser itself
     document’s background colour, you              window           The browser window or a frame within the window
     would assign a value to the document           history          The list of URLs recently accessed from the window
     object’s bgColor property, like this:          document         The currently-loaded HTML document
                                                    frame            An HTML frame
     document.bgColor = “Blue”                      link             A hypertext link
                                                    image            An image in an HTML document
                                                    location         A URL
        Similarly, to display a message box,        form             An HTML form
     you would call the window object’s             button           A button in a form
     alert method:                                  checkbox         A checkbox in a form
                                                    hidden           A hidden field in a form
     window.alert(“Time for lunch”)                 password         A password field in a form
                                                    radio            A set of radio buttons in a form
                                                    reset            A reset button in a form
        The window object is different from         select           An option list (listbox or combo box) in a form
     the others in that it is assumed to pre-       option           An item within an option list
     sent if no object is specified. In other       submit           A submit button in a form
     words, if you omitted the word win-            text             A one-line text field in a form
                                                    textarea         A scrolling text field within a form
     dow and the subsequent dot in the
                                                    screen           The screen display
     above statement, it would work in just         embed            An embedded object in a document
     the same way.                                  applet           A Java applet embedded in an HTML document
        Most properties are simple values,          mimeType         A mime type supported by the browser
     such as the bgColor property shown             plugin           A plug-in supported by the browser
     above. However, it is also possible for
     a property to be an array. What’s more,
                                                                               Figure 6 - Browser objects.


File: T0526.6                                     PC Support Advisor                                         Update 140 (July 2000) Page 20
                                                         www.itp-journals.com
Tutorial:Programming




                                                                                        JavaScript

        The event we are responding to           order form for an online shopping site.            As an example, consider a Java ap-
     here is the click event associated with     Let’s suppose that the order is subject         plet which displays various types of
     the link. The code which is to be exe-      to a minimum quantity of 100 units. If          charts. Let’s suppose that the applet
     cuted when this event happens is            the user enters a value below that fig-         has a class called Charts; this in turn
     stored in the string to the right of the    ure, we want to display an alert and            has a method called BarChart(). To ac-
     equals sign in the second line. This        reject the value.                               cess the applet from your JavaScript
     string is assigned to the OnClick attrib-       A good place to do this check would         code, you first incorporate it into the
     ute of the link. (The relevant attribute    be in the blur event of the order quan-         page using the standard HTML applet
     names are always the same as the cor-       tity field. As its name might suggest,          tag:
     responding event names but preceded         this event occurs when the field loses
     by On.)                                     focus.                                          <applet code=“Charts.class”
        Note that, although the string con-          Figure 7 shows how the code might           name=“mychart”
     tains JavaScript code, the entire con-      look (for clarity, I have excluded de-          width=100 height=50> </applet>
     struct is HTML, not JavaScript. For         tails which are not relevant to the ex-
     that reason, the event attribute name       ample). As you can see, a separate                 Once this has been done, JavaScript
     (OnClick in this case) is not case-sensi-   function, called ValidateQty(), per-            can access the applet’s variables and
     tive.                                       forms the validation and displays the           methods through the browser’s built-
        In the above example, we are exe-        alert. If the check fails, this function        in applet object. This object, which is a
     cuting a single JavaScript statement in     also calls the field’s focus() and select()     property of the document object, lets
     response to the event. It is possible to    methods to ensure that focus remains            you reference specific applets by
     place multiple statements in the string,    in the field. If it did not do this, the user   means of their class names. So the code
     using a semi-colon as a separator.          could simply ignore the error.                  to call the Chart applet’s BarChart()
     However, in these cases it is usually           Note that the validation function           method would look like this:
     more convenient to place the code in a      treats a value of zero as being valid.
     function, and to call the function from     This allows the user to skip the order          document.Chart.BarChart()
     the event attribute. We’ll see an exam-     quantity and return to it later. To pre-
     ple of this in a moment.                    vent a zero order quantity from being               For this to work, the applet’s class
                                                 sent to the server, the field should be         name, and the names of the relevant
     Form Validation                             re-checked when the user submits the            variables and methods, must be de-
                                                 form (that is, in the form’s submit             clared public. This is simply a matter
        For a more complete example of           event). For that matter, all checks of          of adding the keyword public to the
     event processing, we will return to the     this type should also be repeated by            appropriate declarations in the Java
     scenario I mentioned at the start of the    the server just in case the user does not       code.
     article: validating the contents of an      have JavaScript enabled.                            ActiveX controls are slightly more
                                                                                                 difficult to handle. Essentially, you use
                                                 Component Scripting                             the <object> tag to insert the control
       <html>
       <head>
                                                                                                 into the document and to specify the
       <script language=“JavaScript”>                Although JavaScript and Java are            values of its various attributes. These
       <!—                                       quite separate, they can interact with          include the control’s CLSID (a unique
       function ValidateQty(fld)                 each other in several useful ways. Spe-         code that identifies every COM com-
       { if (fld.value !=0 &&                    cifically, you can use JavaScript to pro-       ponent) and the initial values of its
         fld.value < 100)                        grammatically access the variables              properties. The control’s events are de-
         { alert(“Minimum order is
                                                 (properties) and methods of a Java ap-          clared by means of additional attrib-
           100 units”)
         fld.focus()
                                                 plet, and you can similarly use Java to         utes to the <script> tag.
         fld.select() }                          interface with JavaScript objects. It is            In practice, you can avoid much of
        }                                        also possible for JavaScript to interact        the coding associated with ActiveX
       // —> </script>                           with ActiveX controls.                          controls by using a suitable HTML
       </head>                                       These features can do a great deal          authoring tool. In FrontPage 2000, for
                                                 to enhance the functionality and ap-            instance, you can insert the control via
       <body>
         <p><input type“=TEXT”
                                                 pearance of your JavaScript applica-            the Insert menu, and adjust its proper-
       name=“Qty” size=“20”                      tions. Java applets and ActiveX                 ties from a dialog which you reach by
         OnBlur = “Vali-                         controls can take you well beyond               right-clicking on the control in the ed-
       dateQty(Qty)”></p>                        what JavaScript on its own can                  iting window. These actions will auto-
       </form>                                   achieve. For example, there are applets         matically generate the <object> tag
       </body>                                   and controls which can supply sophis-           and its various attributes.
       </html>
                                                 ticated user interface elements, such as
                                                 pop-up calendars, expandable trees,
                                                 progress bars and Windows Explorer-
                                                                                                 Server-Side Scripts
            Figure 7 - Form validation
                     example.                    style views.                                       So far, this article has concentrated



Update 140 (July 2000) Page 21                   PC Support Advisor                                                                File: T0526.7
                                                         www.itp-journals.com
Tutorial:Programming




     on client-side JavaScript. The main dif-
     ference in server-side scripting is that
     the scripts are compiled in advance,           “In a Netscape environment, the script
     and left to execute in the background,
     waiting for a request from a client. The         requires a FastTrack or Enterprise
     language and syntax are almost the
     same, but server-side scripts have ac-         server, and is supported by a Netscape
     cess to a different range of built-in ob-
     jects. There are also some differences              technology called LiveWire.”
     in the associated HTML tags.
         When writing server-side JavaS-
     cript, you need to know what type of
     server it will run on. In a Netscape        and returns HTML pages to the             Conclusion
     environment, the script requires a          browser. ASP is not specific to JavaS-
     FastTrack or Enterprise server, and is      cript; it also supports VBScript and         This article has presented a brief
     supported by a Netscape technology          Perl.                                     introduction to what is undoubtedly a
     called LiveWire. Among other things,           Like LiveWire, ASP provides ob-        very substantial and capable lan-
     LiveWire provides a JavaScript com-         jects for performing low-level file ac-   guage. I have described the basic con-
     piler which converts the script to a        cess on the server and for accessing      cepts, but there are many details which
     bytecode file (with the extension           back-end databases via ODBC.              I do not have space to cover.
     WEB). Another LiveWire component,              To finish, here is a simple example       To learn JavaScript properly, you
     called Application Manager, is then         of a server-side script. These three      will want to find out more about the
     used to activate the compiled code.         lines of LiveWire code display the        built-in objects and the event model,
     The script actually runs when the user      user’s IP address in the browser win-     and you will probably want to delve
     opens its URL in the browser.               dow:                                      further into server-side scripting as
         LiveWire also provides a way for                                                  well. Fortunately, there are many
     JavaScript code to store permanent in-                                                books and online resources available
     formation on the server. By using the       <SERVER>                                  to help you do that. My aim has been
     File object, the script can perform low-    write(“Your IP address is ”+-             to encourage you to get started with
     level input and output to serial files.     request.ip)                               this very useful technology.
     Alternatively, you can use the data-        </SERVER>
     base object to access back-end data-
     bases via ODBC. These tools make it            Note the use of the <SERVER> and
     possible to write full-blown server-        SERVER> tags in place of <SCRIPT>
     side applications which collect data        and </SCRIPT>. The request object
     from the user, execute queries, gener-      provides details of the requesting
     ate reports, and quite a lot more.          browser. The ASP equivalent of this
         The Microsoft equivalent of             code would not include the <SERV-
     LiveWire is Active Server Pages (ASP).      ER> tags, but would instead have a
     This runs on Microsoft’s Internet Infor-    Language declaration at the top of the
     mation Server (IIS) and Personal Web        document. The syntax for using the
                                                                                                                        PCSA
     Server. It provides a run-time engine       Request object (note there is a capital
     which interprets server-side scripts        R in the Microsoft version) would also
     (held in files with the extension ASP)      be slightly different.


                                JavaScript Resources
          If you are interested in going further with JavaScript, you can download                            Copyright ITP, 2000
       a full set of Netscape reference manuals and tutorials from devel-
       oper.netscape.com/docs/manuals/. For the complete JScript documenta-
       tion, go to msdn.microsoft.com/scripting and follow the download link.
       Both sites also have useful FAQs.
          The official ECMA 262 standard is available from www.ecma.ch. Note
                                                                                                    The Author
       that this is a formal specification and is not intended as a learning aid.            Mike Lewis is a freelance technical
          There are no significant third-party sites devoted exclusively to JavaS-           journalist and a regular contribu-
       cript. However, Gamelan (www.gamelan.com) and Java World                              tor to PCSA. You can contact him
       (www.javaworld.com) are two Java-oriented sites which also provide use-               by email at mike.lewis@itp-jour-
       ful JavaScript content.                                                               nals.com.



File: T0526.8                                    PC Support Advisor                                     Update 140 (July 2000) Page 22
                                                        www.itp-journals.com
New Reviews from Tech Support Alert

Anti-Trojan Software Reviews
A detailed review of six of the best anti trojan software programs. Two products
were impressive with a clear gap between these and other contenders in their
ability to detect and remove dangerous modern trojans.

Inkjet Printer Cartridge Suppliers
Everyone gets inundated by hundreds of ads for inkjet printer cartridges, all
claiming to be the cheapest or best. But which vendor do you believe? Our
editors decided to put them to the test by anonymously buying printer cartridges
and testing them in our office inkjet printers. Many suppliers disappointed but we
came up with several web sites that offer good quality cheap inkjet cartridges
with impressive customer service.

Windows Backup Software
In this review we looked at 18 different backup software products for home or
SOHO use. In the end we could only recommend six though only two were good
enough to get our “Editor’s Choice” award

The 46 Best Freeware Programs
There are many free utilities that perform as well or better than expensive
commercial products. Our Editor Ian Richards picks out his selection of the very
best freeware programs and he comes up with some real gems.




                              Tech Support Alert
                           http://www.techsupportalert.com

More Related Content

What's hot

Introduction to java script
Introduction to java scriptIntroduction to java script
Introduction to java scriptDivyaKS12
 
JavaScript: DOM and jQuery
JavaScript: DOM and jQueryJavaScript: DOM and jQuery
JavaScript: DOM and jQuery維佋 唐
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptLaurence Svekis ✔
 
Introduction to java script
Introduction to java scriptIntroduction to java script
Introduction to java scriptnanjil1984
 
Java Script An Introduction By HWA
Java Script An Introduction By HWAJava Script An Introduction By HWA
Java Script An Introduction By HWAEmma Wood
 
Session vii(java scriptbasics)
Session vii(java scriptbasics)Session vii(java scriptbasics)
Session vii(java scriptbasics)Shrijan Tiwari
 
Introduction to JavaScript
Introduction to JavaScriptIntroduction to JavaScript
Introduction to JavaScriptAndres Baravalle
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascriptambuj pathak
 
Java script Session No 1
Java script Session No 1Java script Session No 1
Java script Session No 1Saif Ullah Dar
 
An Introduction to JavaScript
An Introduction to JavaScriptAn Introduction to JavaScript
An Introduction to JavaScripttonyh1
 
Javascript Roadmap - The Basics
Javascript Roadmap - The BasicsJavascript Roadmap - The Basics
Javascript Roadmap - The BasicsAswin Barath
 
1. java script language fundamentals
1. java script language fundamentals1. java script language fundamentals
1. java script language fundamentalsRajiv Gupta
 

What's hot (20)

Lect35 javascript
Lect35 javascriptLect35 javascript
Lect35 javascript
 
Introduction to java script
Introduction to java scriptIntroduction to java script
Introduction to java script
 
Jsp lecture
Jsp lectureJsp lecture
Jsp lecture
 
JavaScript: DOM and jQuery
JavaScript: DOM and jQueryJavaScript: DOM and jQuery
JavaScript: DOM and jQuery
 
Javascript Basics
Javascript BasicsJavascript Basics
Javascript Basics
 
Vbscript
VbscriptVbscript
Vbscript
 
JavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScriptJavaScript guide 2020 Learn JavaScript
JavaScript guide 2020 Learn JavaScript
 
Introduction to java script
Introduction to java scriptIntroduction to java script
Introduction to java script
 
Javascript
JavascriptJavascript
Javascript
 
Java Script An Introduction By HWA
Java Script An Introduction By HWAJava Script An Introduction By HWA
Java Script An Introduction By HWA
 
Node js crash course session 1
Node js crash course   session 1Node js crash course   session 1
Node js crash course session 1
 
Session vii(java scriptbasics)
Session vii(java scriptbasics)Session vii(java scriptbasics)
Session vii(java scriptbasics)
 
Java Script
Java ScriptJava Script
Java Script
 
Introduction to JavaScript
Introduction to JavaScriptIntroduction to JavaScript
Introduction to JavaScript
 
Introduction to Javascript
Introduction to JavascriptIntroduction to Javascript
Introduction to Javascript
 
Java script Session No 1
Java script Session No 1Java script Session No 1
Java script Session No 1
 
An Introduction to JavaScript
An Introduction to JavaScriptAn Introduction to JavaScript
An Introduction to JavaScript
 
Javascript Roadmap - The Basics
Javascript Roadmap - The BasicsJavascript Roadmap - The Basics
Javascript Roadmap - The Basics
 
Java script
Java scriptJava script
Java script
 
1. java script language fundamentals
1. java script language fundamentals1. java script language fundamentals
1. java script language fundamentals
 

Viewers also liked

Redesigning Your Website: When, Why, & How - SEO.com
Redesigning Your Website: When, Why, & How - SEO.comRedesigning Your Website: When, Why, & How - SEO.com
Redesigning Your Website: When, Why, & How - SEO.comshuey03
 
SEO for eCommerce
SEO for eCommerceSEO for eCommerce
SEO for eCommerceshuey03
 
Proving ROI Through Google Analytics
Proving ROI Through Google AnalyticsProving ROI Through Google Analytics
Proving ROI Through Google Analyticsshuey03
 
Why Doesn't My Website Show Up In The Search Engines?
Why Doesn't My Website Show Up In The Search Engines?Why Doesn't My Website Show Up In The Search Engines?
Why Doesn't My Website Show Up In The Search Engines?shuey03
 
Magnifying Organic SEO via Infographics
Magnifying Organic SEO via InfographicsMagnifying Organic SEO via Infographics
Magnifying Organic SEO via Infographicsshuey03
 
Building Links from Inbound Marketing
Building Links from Inbound MarketingBuilding Links from Inbound Marketing
Building Links from Inbound Marketingshuey03
 
True ROI Measurement in Google Analytics
True ROI Measurement in Google AnalyticsTrue ROI Measurement in Google Analytics
True ROI Measurement in Google AnalyticsJeff Sauer
 

Viewers also liked (7)

Redesigning Your Website: When, Why, & How - SEO.com
Redesigning Your Website: When, Why, & How - SEO.comRedesigning Your Website: When, Why, & How - SEO.com
Redesigning Your Website: When, Why, & How - SEO.com
 
SEO for eCommerce
SEO for eCommerceSEO for eCommerce
SEO for eCommerce
 
Proving ROI Through Google Analytics
Proving ROI Through Google AnalyticsProving ROI Through Google Analytics
Proving ROI Through Google Analytics
 
Why Doesn't My Website Show Up In The Search Engines?
Why Doesn't My Website Show Up In The Search Engines?Why Doesn't My Website Show Up In The Search Engines?
Why Doesn't My Website Show Up In The Search Engines?
 
Magnifying Organic SEO via Infographics
Magnifying Organic SEO via InfographicsMagnifying Organic SEO via Infographics
Magnifying Organic SEO via Infographics
 
Building Links from Inbound Marketing
Building Links from Inbound MarketingBuilding Links from Inbound Marketing
Building Links from Inbound Marketing
 
True ROI Measurement in Google Analytics
True ROI Measurement in Google AnalyticsTrue ROI Measurement in Google Analytics
True ROI Measurement in Google Analytics
 

Similar to t0526-2

Java script by Act Academy
Java script by Act AcademyJava script by Act Academy
Java script by Act Academyactanimation
 
Web programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh MalothWeb programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh MalothBhavsingh Maloth
 
WEB PROGRAMMING UNIT II BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT II BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT II BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT II BY BHAVSINGH MALOTHBhavsingh Maloth
 
Java script Basic
Java script BasicJava script Basic
Java script BasicJaya Kumari
 
Unit 4 Java script.pptx
Unit 4 Java script.pptxUnit 4 Java script.pptx
Unit 4 Java script.pptxGangesh8
 
8.-Javascript-report powerpoint presentation
8.-Javascript-report powerpoint presentation8.-Javascript-report powerpoint presentation
8.-Javascript-report powerpoint presentationJohnLagman3
 
2javascript web programming with JAVA script
2javascript web programming with JAVA script2javascript web programming with JAVA script
2javascript web programming with JAVA scriptumardanjumamaiwada
 
JAVA SCRIPT
JAVA SCRIPTJAVA SCRIPT
JAVA SCRIPTGo4Guru
 
Javascript
JavascriptJavascript
JavascriptSushma M
 
Basic JavaScript Tutorial
Basic JavaScript TutorialBasic JavaScript Tutorial
Basic JavaScript TutorialDHTMLExtreme
 
JavaScript New Tutorial Class XI and XII.pptx
JavaScript New Tutorial Class XI and XII.pptxJavaScript New Tutorial Class XI and XII.pptx
JavaScript New Tutorial Class XI and XII.pptxrish15r890
 
JavaScript - Getting Started.pptx
JavaScript - Getting Started.pptxJavaScript - Getting Started.pptx
JavaScript - Getting Started.pptxJonnJorellPunto
 
Step by Step Guide on Essay Format in APA For Beginners
Step by Step Guide on Essay Format in APA For BeginnersStep by Step Guide on Essay Format in APA For Beginners
Step by Step Guide on Essay Format in APA For Beginnerscalltutors
 

Similar to t0526-2 (20)

Java script by Act Academy
Java script by Act AcademyJava script by Act Academy
Java script by Act Academy
 
Web programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh MalothWeb programming UNIT II by Bhavsingh Maloth
Web programming UNIT II by Bhavsingh Maloth
 
WEB PROGRAMMING UNIT II BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT II BY BHAVSINGH MALOTHWEB PROGRAMMING UNIT II BY BHAVSINGH MALOTH
WEB PROGRAMMING UNIT II BY BHAVSINGH MALOTH
 
Javascript tutorial
Javascript tutorialJavascript tutorial
Javascript tutorial
 
Java script Basic
Java script BasicJava script Basic
Java script Basic
 
Unit 4 Java script.pptx
Unit 4 Java script.pptxUnit 4 Java script.pptx
Unit 4 Java script.pptx
 
8.-Javascript-report powerpoint presentation
8.-Javascript-report powerpoint presentation8.-Javascript-report powerpoint presentation
8.-Javascript-report powerpoint presentation
 
2javascript web programming with JAVA script
2javascript web programming with JAVA script2javascript web programming with JAVA script
2javascript web programming with JAVA script
 
JAVA SCRIPT
JAVA SCRIPTJAVA SCRIPT
JAVA SCRIPT
 
Javascript
JavascriptJavascript
Javascript
 
Java script
Java scriptJava script
Java script
 
js.pptx
js.pptxjs.pptx
js.pptx
 
WTA-MODULE-4.pptx
WTA-MODULE-4.pptxWTA-MODULE-4.pptx
WTA-MODULE-4.pptx
 
Basic JavaScript Tutorial
Basic JavaScript TutorialBasic JavaScript Tutorial
Basic JavaScript Tutorial
 
JavaScript New Tutorial Class XI and XII.pptx
JavaScript New Tutorial Class XI and XII.pptxJavaScript New Tutorial Class XI and XII.pptx
JavaScript New Tutorial Class XI and XII.pptx
 
CSC PPT 12.pptx
CSC PPT 12.pptxCSC PPT 12.pptx
CSC PPT 12.pptx
 
Java script
Java scriptJava script
Java script
 
JavaScript - Getting Started.pptx
JavaScript - Getting Started.pptxJavaScript - Getting Started.pptx
JavaScript - Getting Started.pptx
 
Java scipt
Java sciptJava scipt
Java scipt
 
Step by Step Guide on Essay Format in APA For Beginners
Step by Step Guide on Essay Format in APA For BeginnersStep by Step Guide on Essay Format in APA For Beginners
Step by Step Guide on Essay Format in APA For Beginners
 

More from tutorialsruby

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>tutorialsruby
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />tutorialsruby
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008tutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheetstutorialsruby
 

More from tutorialsruby (20)

&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
TopStyle Help &amp; &lt;b>Tutorial&lt;/b>
 
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
The Art Institute of Atlanta IMD 210 Fundamentals of Scripting &lt;b>...&lt;/b>
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />&lt;img src="../i/r_14.png" />
&lt;img src="../i/r_14.png" />
 
Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0Standardization and Knowledge Transfer – INS0
Standardization and Knowledge Transfer – INS0
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml_basics
xhtml_basicsxhtml_basics
xhtml_basics
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
xhtml-documentation
xhtml-documentationxhtml-documentation
xhtml-documentation
 
CSS
CSSCSS
CSS
 
CSS
CSSCSS
CSS
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa0602690047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
0047ecaa6ea3e9ac0a13a2fe96f4de3bfd515c88f5d90c1fae79b956363d7f02c7fa060269
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
HowTo_CSS
HowTo_CSSHowTo_CSS
HowTo_CSS
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
BloggingWithStyle_2008
BloggingWithStyle_2008BloggingWithStyle_2008
BloggingWithStyle_2008
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 
cascadingstylesheets
cascadingstylesheetscascadingstylesheets
cascadingstylesheets
 

Recently uploaded

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 

Recently uploaded (20)

Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 

t0526-2

  • 1. Tutorial:Programming Understanding JavaScript JavaScript is not related to Java; JavaScript and JScript are both implementations of a notional standard language called ECMAScript. We explain the origin of these related languages and show how they can be used to enhance Web pages. Concluding our two-part article. By Mike Lewis O ne of the nice things about de- veloping in JavaScript is that you don’t need to buy any special tools: you already have every- earlier. You can also specify ”JScript” as the language, in which case it will be ignored by all versions of Navigator and Opera. displaying the text which appears be- tween them. However, the JavaScript interpreter correctly treats the en- closed text as code and executes it as thing you need to get started. You can In most cases, however, it is better normal. (The double forward slash is write the code using a simple text edi- not to specify a version unless you not officially part of the end-of-com- tor, and you use your normal Web know for sure which browsers will be ment tag, but is required in this context browser to test it. You could also write used. If necessary, your code can de- by Netscape Navigator.) the code using any Web authoring tool tect the browser version and act ac- If you want to include a comment which lets you directly edit the HTML; cordingly. within JavaScript itself, you have two the authoring tool does not need to be If the browser supports no scripting choices. If the comment occupies a sin- specifically JavaScript-enabled. language at all, it will simply disregard gle line, start it with //. To write a You write JavaScript code inside a the <script> tag. Unfortunately, this multi-line comment, start the com- normal HTML page. To separate the means that whatever appears between ment with /* and end it with */. Figure code from the rest of the page, you <script> and </script> will be treated 2 includes examples of both these delimit it with <script> and </script> as normal HTML text. The actual code styles. tags. Everything inside those tags is - such as the document.write state- You might want your HTML docu- interpreted as script, everything out- ment in the above example - will there- ment to take some special action if the side as HTML. The script tag includes fore be displayed as part of the browser does not support JavaScript, a Language attribute which identifies document, which is not what you or if the user has chosen to disable it. the specific scripting language: JavaS- want. For example, you might show a mes- cript in this case. You can prevent this by delimiting sage which warns that the page will The following code displays a sim- the script with the following tags: <!— not be displayed properly. You can do ple message in the Web browser: and //—> (see Figure 2, where a more this by means of the <noscript> and complete version of the Hello World </noscript> tags. Any HTML appear- <script language=”JavaScript”> example uses these conventions). ing between these tags will be dis- document.write(“Hello World”) HTML treats these tags as comment played if, and only if, scripting is not </script> delimiters and therefore refrains from currently available. For example: When the browser loads the page it Browser Supports will work through the contents in se- Navigator 2.0 JavaScript 1.0 quence, from top to bottom, executing Navigator 3.0 JavaScript 1.1 the script when it encounters it. Navigator 4.0 JavaScript 1.2 If you want to restrict the code to a Navigator 4.06 and above JavaScript 1.3 specific version of JavaScript, add the IE 3 JavaScript 1.0, JScript 3.0 version number to the language name. IE 4 JavaScript 1.1, JScript 3.1 IE 5 JavaScript 1.2, JScript 5.0 For example, if you specify the lan- Opera 3.21 and above JavaScript 1.1 guage as “JavaScript1.1”, the code will be ignored by Navigator 2.0 and ear- lier and by Internet Explorer 3.0 and Figure 1 - Browsers which support JavaScript. Update 140 (July 2000) Page 17 PC Support Advisor File: T0526.3 www.itp-journals.com
  • 2. Tutorial:Programming <noscript> pear between the <script> and on the fly. For example, A=1 creates </script> tags. To reference the JS file a numeric variable; A=”Hello” This page requires JavaScript. from within your HTML document, changes the same variable to a use the SRC attribute in the <script> string. </noscript> tag. For example, if your JavaScript q Data types: the following types are code is in a file called HELLO.JS, you supported: number (integer and JS Files would reference it as follows: floating-point), boolean (true, false) and string (delimited with either Some JavaScript programmers pre- <script language=”JavaScript” single- or double-quotes). fer to keep their code separate from the SRC=”hello.js”> q Special values: the value null is an rest of the document. This makes it </script> “empty” value which is not equal to easier to read the script without being any other value that the variable distracted by HTML tags, and it can The filename in the SRC attribute can hold. The value undefined is also help with re-using the code in can include a directory path or a URL. similar, but it evaluates to the de- other documents. The code in the JS file is executed fault value for the appropriate data To achieve this, write your JavaS- instead of - not in addition to - any code type. cript in a separate text file, and save it between the <script> and </script> q Operators: JavaScript supports with the extension JS. The file should tags. If there is any non-script HTML around three dozen operators, in- contain JavaScript code only - that is, in the JS file, an error is generated. cluding many that will be familiar the text which would otherwise ap- to C programmers, such as ++ (in- Language Fundamentals crements a value by one) and += (performs addition and assigns the <html> JavaScript is not so very different result). <head> from C, Pascal, Basic, XBase and many <title>First Example</title> similar procedural languages. Any Data Conversion </head> programmer who already knows one JavaScript performs automatic con- <body> of these languages will have no trouble version between its various data types, <script language=”JavaScript”> understanding JavaScript’s funda- often in interesting ways. For example, <!— mental language elements. For the a boolean variable contains one of two document.write(“Hello World”) next part of the article, I will give you values: true or false. But it can legally // This is a 1-line comment an overview of these elements, starting be used in numeric expressions, in document.write(“<br>”) with some key points: which case true is considered to be /* You can include HTML equal to 1 and false to 0. In the follow- tags in the output. The q White space: JavaScript is a free- ing expression, a tax amount would be above inserts a line flowing language, in that the code added to the total if the boolean vari- break */ can include arbitrary spaces, tabs able Taxable was true, but not if it was and line feeds to improve readabil- false: document.write(“Greetings”) ity. There is no end-of-line delim- iter. Total = (Qty * Price) + (Taxable * // —> </script> q Case-sensitivity: you must be care- TaxAmount) </body> </html> ful to observe the correct case when referring to variables, functions, ob- Similarly, if a string happens to con- jects etc. For the most part, JavaS- tain a number, it too can be used in Figure 2 - Hello World cript is case-sensitive. arithmetic expressions. Thus, the fol- example, with comments. q Variable names: these may contain lowing code is valid: letters, digits and underscores, and must not start with a digit. (They Tax = “17” currDate = new Date() can also contain dollar signs, but Gross = 100 + Tax TimeNow = currDate.getHours() the ECMA standard recommends Withhold = true * Tax that these be reserved for use by if (TimeNow < 12) Strings { Greeting = “Good Morning” } automatic code generators.) else if (TimeNow < 18) q Declarations: you do not have to JavaScript strings can contain C- Greeting = “Good Afternoon” declare variables in advance, nor do like escape characters, including t for else Greeting = “Good you need to explicitly specify their tab, n or r for line feed or carriage- Evening” data types. A variable is created on return (these two have the same effect) the fly the first time that a value is and for backslash. But care is document.write(Greeting) assigned to it, and its data type is needed; HTML normally disregards determined from the value. What’s tabs and line feeds, so to use these Figure 3 - An if/else construct. more, the variable can be re-typed characters in displayed text you must File: T0526.4 PC Support Advisor Update 140 (July 2000) Page 18 www.itp-journals.com
  • 3. Tutorial:Programming JavaScript format the text with the HTML <PRE> Arrays are always zero-based - that in your code. Optionally, functions can style. is, the first element’s subscript is 0. receive parameters and return a result. Strings can also contain HTML for- Array elements can contain any data The result can be used just like any matting tags. As an example, the fol- type, not necessarily the same type for other value, for instance in an expres- lowing code displays three names, all elements. An element can even con- sion. each on a separate line, with the mid- tain another array: For example, here is a function dle one in bold: which returns the mean average of the MyArray = new Array(20) two numbers which are passed to it as document.write(“Tomn<B>Dick<B>- MyArray[5] = new Array(10) parameters: nHarry”) MyArray[5][0] = “Hi” function MeanAv(n1,n2) Arrays You are not obliged to specify the { return (n1+n2)/2 } Unlike simple variables, arrays length of the array when you create it, must be explicitly declared before they and your code can change the length Note the use of braces to enclose the can be referenced. You declare an ar- dynamically. In this example, the array body of the function. These are man- ray with the operator new, like this: will initially be of length zero: datory, even if the function contains only one statement. MyArray = new Array(20) Arr1 = new Array() JavaScript programmers usually place their function definitions in the This creates an array called MyAr- To increase the length, simply as- document’s head - that is, between the ray with 20 elements. The elements sign a value to an element beyond the <HEAD> and </HEAD> tags. This is start life with no specific data type, and end of the array: not obligatory, but it does ensure that their initial value is the special value, the function is defined before it is undefined. To reference the elements, Arr1[9] = “Greetings” called. This is especially important use square brackets: where event-handlers are used (more Program-Flow Constructs of this later). Figure 5 shows an exam- MyArray[3] = “Hello” JavaScript supports a range of ple. This performs the same action as branching and looping constructs, the code in Figure 4, but it uses a sepa- for (i=1;i<7;i++){ similar to those found in other lan- rate function to perform the actual out- tag1 = “<H“+i+”>” guages. You can use if/else or a switch put. tag2 = “</H“+i+”>” statement to test conditions. Three Document.write(tag1+“Heading constructs are available for executing a Object Orientation level ”+i+tag2)} block of code repeatedly: for, while, and do/while. The syntax of these con- The language elements I have de- Figure 4 - A for loop. structs closely resembles that of C. scribed so far can be used to produce Figure 3 shows a simple if/else con- worthwhile JavaScript programs struct. Note that I have used braces to which can greatly enhance your Web enclose the block of statements follow- pages. However, the real power of <html> ing the first test. These braces are in JavaScript only becomes apparent <head> fact optional if the block contains just when you make use of two further <title>Function call one statement, as is the case here. Note concepts: objects and events. example</title> also that, unlike in C, there is no semi- JavaScript is not a pure object-ori- <script language=”JavaScript”> colon at the end of the construct (al- ented language. It does not let you <!— though no harm is done if this is create new classes through inheri- function ShowHeading(str,lev) included). tance, nor does it support the concept {document.write(“<H“+lev+”>- “+str+”</H“+lev+”>”)} For an example of a for loop, look at of a class hierarchy. However, it does // —> </script> Figure 4. Here we are executing a allow you to create new instances of </head> document.write statement six times. objects and to access their properties Each time round the loop, we generate and methods. More importantly, the <body> a message consisting of the name of the browser environment supplies a range <script language="JavaScript"> next consecutive HTML heading style of pre-defined objects which let you <!— for (i=1;i<7;i++) (using the <Hn> and </Hn> tags). In interact with Web pages in many use- ShowHeading(“Heading level ”- each case, the message is formatted in ful ways. +i,i) the style in question. We have already used one of these // —> </script> built-in browser objects: the docu- </body> Functions ment. The document object embodies </html> the properties and methods of the As you would expect, JavaScript lets you define functions, which you document currently loaded in the Figure 5 - A function call. can subsequently call from elsewhere browser window. When you issue a Update 140 (July 2000) Page 19 PC Support Advisor File: T0526.5 www.itp-journals.com
  • 4. Tutorial:Programming document.write statement, you are in an array can itself hold objects. For cally performed by the user. For exam- fact calling the write method of the example, the document object has a ple, when the user clicks on a button, document object. property called links. This is an array, the button-click event occurs; when a Other pre-defined browser objects which in turn holds a set of objects, document is loaded in a window, the include window, history and naviga- each of which is of type link. Each link window-load event occurs; and so tor. The various elements that can ap- object is a reference to an instance of a forth. pear in forms (text boxes, radio hyperlink within the document. (Care By writing “event handlers” you buttons, submit buttons etc) are also is needed here: links, in the plural, is can make your documents respond to objects. For details of these and other the array; link, in the singular, is an these events. Thus, if you wanted to browser objects, see Figure 6. individual object within the array.) prompt the user for confirmation be- JavaScript also lets you define en- The following code iterates the fore following a link, you could write tirely new object types and to create links array and displays the URL asso- an event handler for the link’s click instances of objects based on them. ciated with each link contained in it: event. The event handler would con- There are also several built-in object tain the code which prompts for con- types (built-in object types are not the for (i=0;i<document.links.- firmation. The code would be executed same as built-in objects). For an exam- length;i++) whenever the user clicked on the link. ple, look back at Figure 3. The first line document.write(document.links- The syntax for event-handlers is in this code creates an object called [i].href) somewhat different from the code that currDate, which is based on the built- we have seen so far. Each event is as- in Date object type. In the first line of this example, we sociated with an HTML element. Although it might not be obvious, use the length property of the links When you write JavaScript code to re- JavaScript arrays are also objects. array (remember, an array is also an spond to an event, you do not place it When you declare an array, you are in object) to determine how many hyper- within the <script> and </script> tags. fact creating a new instance of an ob- links exist in the document. In the sec- Rather, you make it an attribute of the ject based on the built-in Array object ond line, we display each individual tag of the element to which it relates. type. link object’s href property, which con- For example, the following code tains the target URL. displays an alert when the user clicks Object Syntax on a link: The basic syntax for working with Events objects is sometimes called dot nota- <p><a href=“www.whatever.com” tion. This simply means that, when To a large extent, JavaScript is an OnClick = “alert(‘You are leaving referring to a property or method, you event-driven environment. An event the page’)”> precede its name with that of the object occurs as a result of some action, typi- </a></p> that it belongs to, using a dot as a separator. Object Details For example, to change the current navigator The browser itself document’s background colour, you window The browser window or a frame within the window would assign a value to the document history The list of URLs recently accessed from the window object’s bgColor property, like this: document The currently-loaded HTML document frame An HTML frame document.bgColor = “Blue” link A hypertext link image An image in an HTML document location A URL Similarly, to display a message box, form An HTML form you would call the window object’s button A button in a form alert method: checkbox A checkbox in a form hidden A hidden field in a form window.alert(“Time for lunch”) password A password field in a form radio A set of radio buttons in a form reset A reset button in a form The window object is different from select An option list (listbox or combo box) in a form the others in that it is assumed to pre- option An item within an option list sent if no object is specified. In other submit A submit button in a form words, if you omitted the word win- text A one-line text field in a form textarea A scrolling text field within a form dow and the subsequent dot in the screen The screen display above statement, it would work in just embed An embedded object in a document the same way. applet A Java applet embedded in an HTML document Most properties are simple values, mimeType A mime type supported by the browser such as the bgColor property shown plugin A plug-in supported by the browser above. However, it is also possible for a property to be an array. What’s more, Figure 6 - Browser objects. File: T0526.6 PC Support Advisor Update 140 (July 2000) Page 20 www.itp-journals.com
  • 5. Tutorial:Programming JavaScript The event we are responding to order form for an online shopping site. As an example, consider a Java ap- here is the click event associated with Let’s suppose that the order is subject plet which displays various types of the link. The code which is to be exe- to a minimum quantity of 100 units. If charts. Let’s suppose that the applet cuted when this event happens is the user enters a value below that fig- has a class called Charts; this in turn stored in the string to the right of the ure, we want to display an alert and has a method called BarChart(). To ac- equals sign in the second line. This reject the value. cess the applet from your JavaScript string is assigned to the OnClick attrib- A good place to do this check would code, you first incorporate it into the ute of the link. (The relevant attribute be in the blur event of the order quan- page using the standard HTML applet names are always the same as the cor- tity field. As its name might suggest, tag: responding event names but preceded this event occurs when the field loses by On.) focus. <applet code=“Charts.class” Note that, although the string con- Figure 7 shows how the code might name=“mychart” tains JavaScript code, the entire con- look (for clarity, I have excluded de- width=100 height=50> </applet> struct is HTML, not JavaScript. For tails which are not relevant to the ex- that reason, the event attribute name ample). As you can see, a separate Once this has been done, JavaScript (OnClick in this case) is not case-sensi- function, called ValidateQty(), per- can access the applet’s variables and tive. forms the validation and displays the methods through the browser’s built- In the above example, we are exe- alert. If the check fails, this function in applet object. This object, which is a cuting a single JavaScript statement in also calls the field’s focus() and select() property of the document object, lets response to the event. It is possible to methods to ensure that focus remains you reference specific applets by place multiple statements in the string, in the field. If it did not do this, the user means of their class names. So the code using a semi-colon as a separator. could simply ignore the error. to call the Chart applet’s BarChart() However, in these cases it is usually Note that the validation function method would look like this: more convenient to place the code in a treats a value of zero as being valid. function, and to call the function from This allows the user to skip the order document.Chart.BarChart() the event attribute. We’ll see an exam- quantity and return to it later. To pre- ple of this in a moment. vent a zero order quantity from being For this to work, the applet’s class sent to the server, the field should be name, and the names of the relevant Form Validation re-checked when the user submits the variables and methods, must be de- form (that is, in the form’s submit clared public. This is simply a matter For a more complete example of event). For that matter, all checks of of adding the keyword public to the event processing, we will return to the this type should also be repeated by appropriate declarations in the Java scenario I mentioned at the start of the the server just in case the user does not code. article: validating the contents of an have JavaScript enabled. ActiveX controls are slightly more difficult to handle. Essentially, you use Component Scripting the <object> tag to insert the control <html> <head> into the document and to specify the <script language=“JavaScript”> Although JavaScript and Java are values of its various attributes. These <!— quite separate, they can interact with include the control’s CLSID (a unique function ValidateQty(fld) each other in several useful ways. Spe- code that identifies every COM com- { if (fld.value !=0 && cifically, you can use JavaScript to pro- ponent) and the initial values of its fld.value < 100) grammatically access the variables properties. The control’s events are de- { alert(“Minimum order is (properties) and methods of a Java ap- clared by means of additional attrib- 100 units”) fld.focus() plet, and you can similarly use Java to utes to the <script> tag. fld.select() } interface with JavaScript objects. It is In practice, you can avoid much of } also possible for JavaScript to interact the coding associated with ActiveX // —> </script> with ActiveX controls. controls by using a suitable HTML </head> These features can do a great deal authoring tool. In FrontPage 2000, for to enhance the functionality and ap- instance, you can insert the control via <body> <p><input type“=TEXT” pearance of your JavaScript applica- the Insert menu, and adjust its proper- name=“Qty” size=“20” tions. Java applets and ActiveX ties from a dialog which you reach by OnBlur = “Vali- controls can take you well beyond right-clicking on the control in the ed- dateQty(Qty)”></p> what JavaScript on its own can iting window. These actions will auto- </form> achieve. For example, there are applets matically generate the <object> tag </body> and controls which can supply sophis- and its various attributes. </html> ticated user interface elements, such as pop-up calendars, expandable trees, progress bars and Windows Explorer- Server-Side Scripts Figure 7 - Form validation example. style views. So far, this article has concentrated Update 140 (July 2000) Page 21 PC Support Advisor File: T0526.7 www.itp-journals.com
  • 6. Tutorial:Programming on client-side JavaScript. The main dif- ference in server-side scripting is that the scripts are compiled in advance, “In a Netscape environment, the script and left to execute in the background, waiting for a request from a client. The requires a FastTrack or Enterprise language and syntax are almost the same, but server-side scripts have ac- server, and is supported by a Netscape cess to a different range of built-in ob- jects. There are also some differences technology called LiveWire.” in the associated HTML tags. When writing server-side JavaS- cript, you need to know what type of server it will run on. In a Netscape and returns HTML pages to the Conclusion environment, the script requires a browser. ASP is not specific to JavaS- FastTrack or Enterprise server, and is cript; it also supports VBScript and This article has presented a brief supported by a Netscape technology Perl. introduction to what is undoubtedly a called LiveWire. Among other things, Like LiveWire, ASP provides ob- very substantial and capable lan- LiveWire provides a JavaScript com- jects for performing low-level file ac- guage. I have described the basic con- piler which converts the script to a cess on the server and for accessing cepts, but there are many details which bytecode file (with the extension back-end databases via ODBC. I do not have space to cover. WEB). Another LiveWire component, To finish, here is a simple example To learn JavaScript properly, you called Application Manager, is then of a server-side script. These three will want to find out more about the used to activate the compiled code. lines of LiveWire code display the built-in objects and the event model, The script actually runs when the user user’s IP address in the browser win- and you will probably want to delve opens its URL in the browser. dow: further into server-side scripting as LiveWire also provides a way for well. Fortunately, there are many JavaScript code to store permanent in- books and online resources available formation on the server. By using the <SERVER> to help you do that. My aim has been File object, the script can perform low- write(“Your IP address is ”+- to encourage you to get started with level input and output to serial files. request.ip) this very useful technology. Alternatively, you can use the data- </SERVER> base object to access back-end data- bases via ODBC. These tools make it Note the use of the <SERVER> and possible to write full-blown server- SERVER> tags in place of <SCRIPT> side applications which collect data and </SCRIPT>. The request object from the user, execute queries, gener- provides details of the requesting ate reports, and quite a lot more. browser. The ASP equivalent of this The Microsoft equivalent of code would not include the <SERV- LiveWire is Active Server Pages (ASP). ER> tags, but would instead have a This runs on Microsoft’s Internet Infor- Language declaration at the top of the mation Server (IIS) and Personal Web document. The syntax for using the PCSA Server. It provides a run-time engine Request object (note there is a capital which interprets server-side scripts R in the Microsoft version) would also (held in files with the extension ASP) be slightly different. JavaScript Resources If you are interested in going further with JavaScript, you can download Copyright ITP, 2000 a full set of Netscape reference manuals and tutorials from devel- oper.netscape.com/docs/manuals/. For the complete JScript documenta- tion, go to msdn.microsoft.com/scripting and follow the download link. Both sites also have useful FAQs. The official ECMA 262 standard is available from www.ecma.ch. Note The Author that this is a formal specification and is not intended as a learning aid. Mike Lewis is a freelance technical There are no significant third-party sites devoted exclusively to JavaS- journalist and a regular contribu- cript. However, Gamelan (www.gamelan.com) and Java World tor to PCSA. You can contact him (www.javaworld.com) are two Java-oriented sites which also provide use- by email at mike.lewis@itp-jour- ful JavaScript content. nals.com. File: T0526.8 PC Support Advisor Update 140 (July 2000) Page 22 www.itp-journals.com
  • 7. New Reviews from Tech Support Alert Anti-Trojan Software Reviews A detailed review of six of the best anti trojan software programs. Two products were impressive with a clear gap between these and other contenders in their ability to detect and remove dangerous modern trojans. Inkjet Printer Cartridge Suppliers Everyone gets inundated by hundreds of ads for inkjet printer cartridges, all claiming to be the cheapest or best. But which vendor do you believe? Our editors decided to put them to the test by anonymously buying printer cartridges and testing them in our office inkjet printers. Many suppliers disappointed but we came up with several web sites that offer good quality cheap inkjet cartridges with impressive customer service. Windows Backup Software In this review we looked at 18 different backup software products for home or SOHO use. In the end we could only recommend six though only two were good enough to get our “Editor’s Choice” award The 46 Best Freeware Programs There are many free utilities that perform as well or better than expensive commercial products. Our Editor Ian Richards picks out his selection of the very best freeware programs and he comes up with some real gems. Tech Support Alert http://www.techsupportalert.com