Dynamic Web Pages - Integrating JavaScript into a SAS Web Application Caroline Bahler, ASG, Inc.

Similar documents
New Perspectives on Creating Web Pages with HTML. Tutorial Objectives

Pearson Education Limited Edinburgh Gate Harlow Essex CM20 2JE England and Associated Companies throughout the world

Fundamentals of Website Development

CISH-6510 Web Application Design and Development. Overview of JavaScript. Overview

JavaScript and XHTML. Prof. D. Krupesha, PESIT, Bangalore

JAVASCRIPT BASICS. Handling Events In JavaScript. In programing, event-driven programming could be a programming

Events: another simple example

LECTURE-3. Exceptions JS Events. CS3101: Programming Languages: Javascript Ramana Isukapalli

Introduction to using HTML to design webpages

Introduction to DHTML

Want to add cool effects like rollovers and pop-up windows?

1$ 5 ! $ 6 4 * Source: 0 "!*! 0! * 8 97 ?!$ 5 0 *! 4! $ 0 : * ' () 7;7 7<7

JavaScript Handling Events Page 1

COMP519 Web Programming Lecture 16: JavaScript (Part 7) Handouts

LECTURE-2. Functions review HTML Forms. Arrays Exceptions Events. CS3101: Scripting Languages: Javascript Ramana Isukapalli

JavaScript is described in detail in many books on the subject, and there is excellent tutorial material at

8/19/2018. Web Development & Design Foundations with HTML5. Learning Objectives (1 of 2) Learning Objectives (2 of 2) What is JavaScript?

Place User-Defined Functions in the HEAD Section

710 Index Attributes, 127 action attribute, 263 assigning, bottom attribute, domain name attribute, 481 expiration date attribute, 480 8

Creating Web Pages with HTML-Level III Tutorials HTML 6.01

DOM Primer Part 2. Contents

New Media Production Lecture 7 Javascript

The first sample. What is JavaScript?

HTML User Interface Controls. Interactive HTML user interfaces. Document Object Model (DOM)

Web Site Development with HTML/JavaScrip

CITS3403 Agile Web Development Semester 1, 2018

Key features. Nothing to do with java It is the Client-side scripting language Designed to add interactivity to HTML pages

Name Related Elements Type Default Depr. DTD Comment

Photo from DOM

Introduction to JavaScript, Part 2

Chapter 1 Introduction to Dreamweaver CS3 1. About Dreamweaver CS3 Interface...4. Creating New Webpages...10

TEXTAREA NN 2 IE 3 DOM 1

JavaScript and Events

Question No: 2 ( Marks: 1 ) - Please choose one Which of these is the correct HTML code for creating a reset button?

A Balanced Introduction to Computer Science, 3/E

Beijing , China. Keywords: Web system, XSS vulnerability, Filtering mechanisms, Vulnerability scanning.

E ECMAScript, 21 elements collection, HTML, 30 31, 31. Index 161

Web Development & Design Foundations with HTML5

Chapter4: HTML Table and Script page, HTML5 new forms. Asst. Prof. Dr. Supakit Nootyaskool Information Technology, KMITL

CSC Javascript

Skyway Builder Web Control Guide

Web Designing Course

COMS 359: Interactive Media


Q1. What is JavaScript?

A Generalized Macro-Based Data Reporting System to Produce Both HTML and Text Files

Web Development & Design Foundations with HTML5, 8 th Edition Instructor Materials Chapter 14 Test Bank

Netscape Introduction to the JavaScript Language

No previous knowledge of Java is required for this workshop.

OU EDUCATE TRAINING MANUAL

1. Cascading Style Sheet and JavaScript

B. V. Patel Institute of Business Management, Computer & Information Technology, UTU

a.) All main headings should be italicized. h1 {font-style: italic;} Use an ordinary selector. HTML will need no alteration.

PIC 40A. Midterm 1 Review

Programming the World Wide Web by Robert W. Sebesta

Installation and Configuration Manual

How to set up a local root folder and site structure

SPARK. User Manual Ver ITLAQ Technologies

CERTIFICATE IN WEB PROGRAMMING

Princeton University COS 333: Advanced Programming Techniques A Subset of JavaScript

Web Programming and Design. MPT Junior Cycle Tutor: Tamara Demonstrators: Aaron, Marion, Hugh

Table Basics. The structure of an table

EVENT-DRIVEN PROGRAMMING

NEW WEBMASTER HTML & CSS FOR BEGINNERS COURSE SYNOPSIS

1/6/ :28 AM Approved New Course (First Version) CS 50A Course Outline as of Fall 2014

Princeton University COS 333: Advanced Programming Techniques A Subset of JavaScript

JSF - H:INPUTSECRET. Class name of a validator that s created and attached to a component

Session 6. JavaScript Part 1. Reading

1.264 Lecture 12. HTML Introduction to FrontPage

How to lay out a web page with CSS

Designing RIA Accessibility: A Yahoo UI (YUI) Menu Case Study

Lesson 5 Introduction to Cascading Style Sheets

FrontPage 2000 Tutorial -- Advanced

JavaScript By: A. Mousavi & P. Broomhead SERG, School of Engineering Design, Brunel University, UK

Dynamic HTML becomes HTML5. HTML Forms and Server Processing. Form Submission to Web Server. DHTML - Mouse Events. CMST385: Slide Set 8: Forms

[AVWSQ-ADWCS6]: WSQ ICDL Adobe Dreamweaver CS6

Javascript Lecture 23

Controlled Assessment Task. Question 1 - Describe how this HTML code produces the form displayed in the browser.

GO! with Microsoft Excel 2016 Comprehensive

UNIT - III. Every element in a document tree refers to a Node object. Some nodes of the tree are

KillTest *KIJGT 3WCNKV[ $GVVGT 5GTXKEG Q&A NZZV ]]] QORRZKYZ IUS =K ULLKX LXKK [VJGZK YKX\OIK LUX UTK _KGX

COMS W3101: SCRIPTING LANGUAGES: JAVASCRIPT (FALL 2018)

Dynamic documents with JavaScript

Content Author's Reference and Cookbook

Javascript. A key was pressed OR released. A key was released. A mouse button was pressed.

Using Dreamweaver CS6

HIGHER. Computing Science. Web Design & Development Implementation Tasks. Ver 8.9

How to lay out a web page with CSS

Spring 2014 Interim. HTML forms

Canvas & Brush Reference. Source: stock.xchng, Maarten Uilenbroek

Introduction. CHAPTER 3 Working in the SAS Windowing Environment

Hyper- Any time any where go to any web pages. Text- Simple Text. Markup- What will you do

HTML Forms. By Jaroslav Mohapl

Dreamweaver: Web Forms

ver Wfl Adobe lif Sams Teach Yourself Betsy Bruce Robyn Ness SAMS 800 East 96th Street, Indianapolis, Indiana, USA WlM John Ray ^lg^

CIW: Site Development Associate. Course Outline. CIW: Site Development Associate. ( Add-On ) 26 Aug 2018

ITEC447 Web Projects CHAPTER 9 FORMS 1

By the end of this section of the practical, the students should be able to:

Creating Web Pages Using Netscape Composer AGENDA FOR THIS WORKSHOP. 1. How does it all work? 2. What do I need to get started at Fairfield?

Creating your first website Part 4: Formatting your page with CSS

Transcription:

Dynamic Web Pages - Integrating JavaScript into a SAS Web Application Caroline Bahler, ASG, Inc. Abstract The use of dynamic web pages in either Internet or Intranet applications is rapidly becoming the hottest SAS application development topic. One component of a dynamic web page is the use of the JavaScript language. JavaScript is a language that has tremendous potential for enhancing web applications, especially client-side data validation. The objective of this paper is to introduce the JavaScript language, illustrate how web page developers are using it, and discuss how the JavaScript language could be incorporated into a web application powered by SAS. Introduction Development of a dynamic web application involves the integration of the client-side "frontend" HTML document and the "guts" or serverside where the actual data handling and analysis by SAS occurs. Web publishing requires the following components a browser, a web server and a HTML document. The HTML document can contain both text and images to navigate from one web page to another. Hypertext markup language (HTML) is an evolving language that uses tags to signal internet browsers of different types on different hardware environments to present a document identically over all of those environments 2 A tag is a command that will be interpreted by the browser to display a portion of a document in a specific manner. JavaScript allows the developer to modify and expand the functionality of a HTML tag. This paper assumes the reader has a working knowledge of HTML and is familiar with the layout of HTML documents. The objective of this paper is to introduce the JavaScript language, illustrate how web page developers are using it, and discuss how the JavaScript language could be incorporated into a web application powered by SAS. Dynamic HTML and JavaScript "Dynamic" HTML is an evolving term that changes as the "technology" of the browser changes. What encompasses "dynamic" HTML is function of the person defining it. Originally, a "dynamic" HTML page would display the current date or post the number of hits at a given web site. Currently, "dynamic" HTML can be defined as the combination of HTML and the JavaScript language to allow documents to change as the user interacts with the document. In other words, "dynamic" HTML in this instance refers to the information displayed by a document changing as the user interacts with the document. Another typical use of "dynamic" HTML is data validation of form data, on the client side instead of the server. In this paper, a "dynamic web application is defined as: 1. an application that interacts with the server (utilizing CGI or SASIINTRNE'- ) to request information from a SAS data set or other data source 2. manipulates or analyzes that data 3. publishes a report or graphic analysis to the client 4 The JavaScript language was developed as an interpreted, object oriented language that is integrated into most web browsers 3. JavaScript language usage can occur on both the client and server sides of a web application, i.e. it is considered to be "cross platform" language. Both the client and server sides of JavaScript language consist of a core language and a specific set of objects that are specific for the platform. Client-side objects are specific for the browser (Netscape or Internet Explorer) and the browser itself will determine which objects are available. Server-side JavaScripts are compiled into executable files. These executable files allow for faster access and can affect the final HTML displayed by the browser. Client-side usage of JavaScript can be through either embedded JavaScript statements in a HTML document or calls to external JavaScript files and is compiled when the HTML is 329

[-NET SOLUTIONS files and is compiled when the HTML is displayed. This paper will only be concerned with client-side JavaScript use. One main function of JavaScript is to allow a document developer to greatly extend the functionality of a document. Cascading style sheets and layering both affect what and way text or images are displayed in an HTML document. This functionality is similar to the use of the SCL within a SAS/AF application to hide or unhide an object on the screen. For example, the current date can be displayed in a document by creating a short JavaScript AND then accessing it within the HTML portion of a document. Some caveats when using JavaScript 5 _ 1. Case is CRITICAL unlike HTML which is not case sensitive 2. Internet Explorer (IE) and Netscape DO NOT support all of the same JavaScript functionality 3. Older versions of browsers either do not support or support "earlier" versions only of JavaScript. Therefore, the script block within a HTML document needs to be written so that it will be hidden from nonsupporting browser versions. 4. The script should be placed in or just after the Head section of the HTML document to ensure the script compiles before the Body section is interpreted. Another option is to place the script in a separate file that is called at runtime. 5. JavaScript prefers that all object placement on the page be denoted including image height and width. 6. How the JavaScript is formatted within a text editor is important. Avoid using the wrap around" option since it could corrupt the meaning of your script unintentionally. JavaScript can be divided into sections - event handlers and language. 1 Event handlers (Table 1) allow the developer to define a set of actions to occur when a specific type of user interaction (event) occurs. User interactions or events include clicking of a mouse key, typing characters into a text box or the loading or unloading of a HTML document. Event handlers can be defined as part of the object call (HTML tags) they are modifying or within a JavaScript. Figure 1 is an example of a page that contains onclick, onmouseover and onmouseout event handlers. Fig 1. Event handler example. <HTML> <BODY> <CENTER> <bl'> <bl'> <bl'> <TABLE BORDER WIDTH="60%" BGCOLOR="#FFCC33" > <TR><TD><BR><CENTER><B><I> <FONT COLOR="#990000" SIZE=+3> Examples of Event Handlers<lFONT> <l1><ib><lcenter><br> <ltd><ltr> <TR><TD> <CENTER><BR><B><FONT SIZE=+2> on Click - display of a help window <lfont><lb><br> <FORM> <INPUT type="button" name="help" value="help' onclick= "msgwindow=window.open('help.htm/~, window2~ 'resizable=no, width=300,heighf=400," > <lform><lcenter><br> <ltd><ltr> The onclick action defined within the <INPUT> tag above is to open a new window (note width and height are specified) that will contain the page help.htm!. This new window will be opened in a new browser session and is completely separate from the original page (designated by the window2 option). Note that the size of the window and whether or not the new window is resizable where also specified. Figure 2 illustrates the new window. 330

. I-NET SOLUTIONS.. r.v.'.~ctl:'-olo!2._"""'" Ol!!SIr.AL~ ~JV.:l<IEll'''J1F.E'n!'l.?11...'liii~~ ~-r;;:u..ai/i'jri'j AMSU\~.. 1E.O'i'W~A QilCAOORU9!".. otej.h:i~.. K"JDS(lM...u..;:I' o:r.iljon.zrt,ojo/ol:ot; III!I defined within the <TR><TD> <CENTER> <BR><H4><FONT SIZE=+2> onmouseover - Status Bar Infonnation <lfont><lh4><br> <CENTER><FONT COLOR="#3333FF' SIZE=+ 1 > <A HREF="help.html" onclick="msgwindow=window.open('help.hlml','window2', 'resizable=no,width=300,height=400')" onmouseover="wlndow.status='daylily Cultivar List;return true" onmouseout="window.status=' ';return true''> HELP <la> <lfont ><lcenter> <BR> <ITD><!TR> <!TABLE> <lcenter> <lbody> <lhtml> In the second example on this page an action is defined for when the mouse cursor passes over that anchor. The use of onmouseover in the above example is to put a message in the status line at the bottom of the window, i.e. this example is similar to the "mouse tip" in SASlAr:. In addition, to onmouseover two other, onmouseout and on Click, event handlers are present within the <A> (anchor) tag. The onmouseout defines the action to take place when the mouse cursor does not pass over the anchor and on Click defines what happens when the anchor is selected. Figure 3 illustrates text displayed in the status line of the browser. Fig 3. Message displayed in status line. JavaScript language consists of two separate entities - statements and functions. A function can be defined as a sets of statements bundled into a single call. JavaScript language also contains a set of predefined functions also known as methods and can be grouped into element associated and character or number associated. JavaScript language statements can be classified into 3 main groups - number or text manipulation, display (browser, document and graphics) or action modifiers and inpuvoutput modifiers. In addition, there is a set of specialized JavaScript statements that deal with the browser environment, Java applets, e-mail capabilities and user privileges and security. A JavaScript function can be thought as being analogous to a SAS macro. A function contains arguments passed to it (optional) and a set of JavaScript statements or function calls. Typically a function takes the following form: Function fn (a1,...,an) { statements where all bolded items are required and fn = name of function a1,...,an = arguments these are optional The main difference between a SAS macro and a JavaScript function is how a function operates. A function will only process one set of conditional operations, for example an if... else or do... while. In comparison, a macro can be a complex set of conditional actions with one 331

action depending upon another action. For example, a survey form is created using text boxes, select box, radio button and check box HTML form elements and requires many of these fields to contain entered information or selections. To validate that each of the required fields a function needs to be created for each form element used to determine if the correct action was taken. An example of this type of client-side validation is found in Example 1. Figure 4 illustrates the data entry screen created by the HTML document in example 1. 4. A final function was created that calls each element related function and test for data entry or selection within each of the form elements. If all of the validation conditions are met then the link to the next page is defined and the information entered is passed to the web server. If all of the validation conditions are not met then an alert message is displayed. Important - JavaScript does NOT recognize multiple conditional statements in a single function. For example - function seleetfile () ( if (document.f1.f.options.selectedlndex == 0) return docwnent.fl.action="fo.html" if (document.f~.f.options.selectedlndex == 1) return document.fl.action="fl.html" if (document.fl.f.options.se1ectedindex == 2) return document. fl. action= I. f2. html n Fig 4. Data entry screen. The application requirements defined that each field on the screen had to be valid before the user was allowed to submit the information to the server to be processed. A valid value was defined as information entered into the text boxes and a plant type selected for the select element. To accomplish this- 1. Form and each element within the form was named. 2. A function was created for each element. 3. Each function contained a single conditional statement specifying that the length of the text entry was greater than 0 or first selection within the select box was not made. Note that the options within the select box are number 0... n. If a valid value was present then a variable was set to 1 If no text or option selected an alert message is displayed. In the function above only the first if... else statement will resolve. The other if... else statements will be ignored. In contrast the set of functions below will resolve and move the user to the correct page. <SCRIPT> function fo () ( if Idocument.f1.f.options.selectedIndex 0) return document. fl. action=" fo. html" ) function f1 () ( if (document.fl.f.options.selectedlndex 1) return docwnent.fl.action="fl.html" ) function f2 () ( if (document.fl.f.options.selectedlndex 2) return document.f1.action="f2.html" function selectfile () ( fo () fl() f2 () ) Integration The appropriate use of JavaScript in a web application is determined by the functionality required by that application. In an application 332

that requires interaction with SAS and uses HTML and a browser as a front-end, JavaScript can be utilized. It's primary functionality will be to validate that selections where made before the request is transferred to SAS. In addition, if the information required is a number or date with a specific range that range can be validated. References 1. Netscape Communications Corp. (1997) JavaScript Guide, Version 3.0. Mountain View, CA, Netscape Communications Corp. 2. Graham, Ian S. (1996), HTML Sourcebook. A Complete Guide to HTML 3.0, Second Edition. New York, New York, John Wiley and Sons, Inc. 3. Kent, Peter and Muller, Kent. (1997). Official Netscape JavaScript 1.2 Programmer's Reference. Netscape Press. Mountain View, CA, Netscape Communications Corp. 4. Hoyle, Larry (1997), Interfacing the SAS System with the World Wide Web. Proceedings of the Twenty-second SAS Users Group International Conference, 22:723-732. 5. Java Goodies: Java Requirements. http://www.javagoodies.comljs_req.html SAS, SAS/AF and SAS/INTRNET are registered trademarks or trademarks of SAS Institute, Inc. in the USA and other countries. Netscape is a registered trademarks or trademarks of Netscape, Inc. in the USA and other countries. Microsoft Internet Explorer is a registered trademarks or trademarks of Microsoft, Inc. in the USA and other countries. indicates USA registration. Author can be contacted at Caroline Bahler ASGlnc 2000 Regency Parkway Suite 355 Cary, NC 27511 919-467-0505 E-Mail: ccb@asg-inc.com 333

Table 1. Java s crlpt. Event Handlers 1,3 Event Handler Usage onabort Used to stop loading of an image. on Blur Used when input focus on windows and all form elements is removed. onchange Used with text areas, text fields and select boxes to dictate an action when the value of a field is changed. onclick Used to define what action takes place when a user clicks on a form element or link. ondblclick Used to define an action when a form item or link is double clicked. ondragdrop Used to define an action when a file or shortcut is dragged from the operating system desktop onto a HTML document in the browser. onerror Used to define an action when an error takes place during the loading of an image or HTML document. on Focus Used to define an action when a user places the cursor onto an input, select or submit element within a window or frame or the window itself. on KeyDown Used to define an action when a key is pressed within a document, image, link or text box. on KeyPress Used to specify multiple actions when a key is held down within a document, ima{:le, link or text box. onkeyup Used to define an action when a key is let up within-a document, image, link or text box. onload Used to define an action within a frame, image, layer, or window when a document is completely loaded. onmousedown Used to define an action when a mouse button is pressed within a document, link or button. onmousemove Used to define an action when the mouse is moved. These actions are enabled through event capturing. onmouseout Used to define what action takes place when the mouse pointer is moved off of a link. on MouseOver Used to define what action takes place when a user moves the mouse pointer over a link. onmouseup Used to define an action when a mouse button is released within a document, link or button. onmove Used to define an action when a window or frame is moved. on Reset Used to define an action in addition to resetting form objects when the RESET form object is pressed. on Resize Used to define an action by a window or frame when a window is resized. onselect Used to define an action when the text within a text or textarea object is highlighted (selected). OnSubmit Used in conjunction with onclick to define what action takes place when a user submits a form. OnUnload Used to define an action by a window or frame when a page is exited. "Event handlers In bold are used In examples. 334

/-N T SOLUTIONS Example 1 - Use of JavaScrlpt language for client-side data validation. <html> <head> <title>query</title> </head> <script>.function cs () { if (document.fo~.sname.value.length else { alert ( "Enter Scientific Name") return false.function cc () { > 0) return s=l if (document.fo~.cnama.value.length > 0) return c=1 else ( alert("enter Common Name") return false efunction ct () { if (document.for.ml.pladttype.options.selectedindex > 0) retur~ t=1 else { alert ( "Select Plant Type") return false function checknames () { t=o s=o c=o cs() cc() ct() if (s+t+c < 3) return alert ("please Enter Missing Information") else {document.forml.action="frame.html" document.forml.submit() return false </script> <body TEXT="ltFFFFFF" BGCOLOR="lt3366FF" LINK="ltOOOOEE" VLINK="lt55IABB" ALINK="#FFOOOO"> <b><font SIZE="+3"> <p align="center">plant Information Entry</font></b> </p> <form name="for.ml" method="get"> <table> <tr> <th align="left">enter Scientific Name</th> <td align="left"><input type="text" name="sname". size="40"></td> </tr> <tr> <th align="left">enter Common Name</th> <td align="left"><input type="text" name="cname". size="40"></td> <itr> 335

<tr> <th align="left">enter plant Type</th> <td align="left"><select NAME="plantType"" size="l'> <option NAME="plantType' value= " none " selected> </option> <option NAME="plantType" value="perennial">perennial </option> <option NAME="plantType" value="annual">annual </option> <option NAME="plantType' value="grass">grass </option> <option NAME="plantType" value="shrub">shrub </option> <option NAME="plantType" value="conifer">tree - conifer </option> <option NAME="plantType" value="deciduous">tree - </select></td> </tr> </table> <div align="center"><center><p> </p></center></div> <div align="center"><center><p> <input type="reset"> <input type="button" narne="help value="help" onclick= "rnsgwindow=window. open ( 'help. htrnl', 'windojat2', 'resizable=no,width=300,height=400')"> <br> <br> <input type="button" value='check" onclick="checknameso,~>o </p></center></div><div align="center"></div> </forrn> </body> </htrnl> deciduous </option> 336

Web Resources Below is a listing of web sites with information on Java Script Language and other general information about publishing on the web. All of these references have some interesting and useful material and point to other web sites of interest. JavaScript 1. FAQs, Technical Resources - NetscapeWorld http://www.netscapeworld.comlnetscapeworldlcommoninw.jumps.html#javascript 2. The WDVL: Introduction to Authoring JavaScript http://www.stars.com!authoring! JavaScriptllntro 3. Cut-N-Paste JavaScript http://www.infohiway.com/javascriptlindexf.htm 4. JavaScript Reference http://developer.netscape.comldocsfmanualslcommunicator/jsref/index.htm 5. JavaScript Guide http://developer.netscape.com/docslmanuals/communicator/jsguide4lindex.htm 6. Netscape JavaScript Documentation http://developer.netscape.com/docslmanualslindex.html?content=javascript.html 7. Java Goodies JavaScript Repository http://www.javagoodies.com 8. DevEdge Online - JavaScript Developer Central http://developer.netscape.comltech/javascriptljavascript.html General Information 9. Welcome to developer.com http://www.developer.com 10. Coolnerds - Home Page http://www.coolnerds.com 11. The Web Developer's Virtual Library http://www.stars.com 12. Web Review -- The Legion of DOM: Exploring the Document Object Model http://webreview.com 13. Webreference.com (sm) - The Webmaster's Reference Library http://www.webreference.com 14. DevEdge Online - Home Page http://developer.netscape.com 15. DevEdge Online - Documentation http://developer.netscape.com/docs/index.html 16. Dynamic HTML in Netscape Communicator http://developer.netscape.com/docsfmanualsicommunicator/dynhtmvindex.htm 17. The HTML Goodies Home Page http://www.htmlgoodies.com 337