Javascript Tutorial
Javascript Tutorial
com
Javascript is a scripting language produced by Netscape for use within HTML Web pages. JavaScript is loosely based on Java and it is built into all the major modern browsers. This tutorial gives an initial push to start you with Javascript. For more detail kindly check tutorialspoint.com/javascript
What is JavaScript ?
JavaScript is:
JavaScript is a lightweight, interpreted programming language Designed for creating network-centric applications Complementary to and integrated with Java Complementary to and integrated with HTML Open and cross-platform
JavaScript Syntax:
A JavaScript consists of JavaScript statements that are placed within the <script>... </script> HTML tags in a web page. You can place the <script> tag containing your JavaScript anywhere within you web page but it is preferred way to keep it within the <head> tags. The <script> tag alert the browser program to begin interpreting all the text between these tags as a script. So simple syntax of your JavaScript will be as follows
language: This attribute specifies what scripting language you are using. Typically, its value will be javascript. Although recent versions of HTML (and XHTML, its successor) have phased out the use of this attribute. type: This attribute is what is now recommended to indicate the scripting language in use and its value should be set to "text/javascript".
1|Page
Hello World!
Case Sensitivity:
JavaScript is a case-sensitive language. This means that language keywords, variables, function names, and any other identifiers must always be typed with a consistent capitalization of letters. So identifiers Time, TIme and TIME will have different meanings in JavaScript. NOTE: Care should be taken while writing your variable and function names in JavaScript.
2|Page
Any text between a // and the end of a line is treated as a comment and is ignored by JavaScript. Any text between the characters /* and */ is treated as a comment. This may span multiple lines. JavaScript also recognizes the HTML comment opening sequence <!--. JavaScript treats this as a single-line comment, just as it does the // comment. The HTML comment closing sequence --> is not recognized by JavaScript so it should be written as //-->.
in in in in
<head>...</head> section. <body>...</body> section. <body>...</body> and <head>...</head> sections. and external file and then include in <head>...</head> section.
JavaScript DataTypes:
JavaScript allows you to work with three primitive data types:
Numbers eg. 123, 120.50 etc. Strings of text e.g. "This text string" etc. Boolean e.g. true or false.
JavaScript also defines two trivial data types, null and undefined, each of which defines only a single value.
JavaScript Variables:
Like many other programming languages, JavaScript has variables. Variables can be thought of as named containers. You can place data into these containers and then refer to the data simply by naming the container. Before you use a variable in a JavaScript program, you must declare it. Variables are declared with the var keyword as follows:
3|Page
You should not use any of the JavaScript reserved keyword as variable name. These keywords are mentioned in the next section. For example, break or boolean variable names are not valid. JavaScript variable names should not start with a numeral (0-9). They must begin with a letter or the underscore character. For example, 123test is an invalid variable name but _123test is a valid one. JavaScript variable names are case sensitive. For example, Name and name are two different variables.
4|Page
>
<
(A < B) is true.
>=
<=
(A <= B) is true.
5|Page
Called Bitwise AND operator. It performs a Boolean (A & B) is 2 . AND operation on each bit of its integer arguments. Called Bitwise OR Operator. It performs a Boolean OR operation on each bit of its integer arguments. Called Bitwise XOR Operator. It performs a Boolean exclusive OR operation on each bit of its integer arguments. Exclusive OR means that either operand one is true or operand two is true, but not both. Called Bitwise NOT Operator. It is a is a unary operator and operates by reversing all bits in the operand. Called Bitwise Shift Left Operator. It moves all bits in its first operand to the left by the number of places specified in the second operand. New bits are filled with zeros. Shifting a value left by one position is equivalent to multiplying by 2, shifting two positions is equivalent to multiplying by 4, etc. (A | B) is 3. (A ^ B) is 1.
| ^
(~B) is -4 .
<<
(A << 1) is 4.
>>
Called Bitwise Shift Right with Sign Operator. It (A >> 1) is 1. moves all bits in its first operand to the right by the number of places specified in the second operand. The bits filled in on the left depend on the sign bit of the original operand, in order to preserve the sign of the result. If the first operand is positive, the result has zeros placed in the high bits; if the first operand is negative, the result has ones placed in the high bits. Shifting a value right one place is equivalent to dividing by 2 (discarding the remainder), shifting right two places is equivalent to integer division by 4, and so on. Called Bitwise Shift Right with Zero Operator. This operator is just like the >> operator, except that the bits shifted in on the left are always zero, (A >>> 1) is 1.
>>>
-=
*=
6|Page
%=
Miscellaneous Operator
The Conditional Operator (? :)
There is an oprator called conditional operator. This first evaluates an expression for a true or false value and then execute one of the two given statements depending upon the result of the evaluation. The conditioanl operator has this syntax: Operator ?: Description Conditional Expression Example If Condition is true ? Then value X : Otherwise value Y
if statement:
The if statement is the fundamental control statement that allows JavaScript to make decisions and execute statements conditionally.
Syntax:
if (expression){ Statement(s) to be executed if expression is true }
if...else statement:
The if...else statement is the next form of control statement that allows JavaScript to execute statements in more controlled way.
Syntax:
if (expression){ Statement(s) to be executed if expression is true }else{ Statement(s) to be executed if expression is false }
7|Page
Syntax:
if (expression 1){ Statement(s) to be executed }else if (expression 2){ Statement(s) to be executed }else if (expression 3){ Statement(s) to be executed }else{ Statement(s) to be executed } if expression 1 is true if expression 2 is true if expression 3 is true if no expression is true
switch statement:
The basic syntax of the switch statement is to give an expression to evaluate and several different statements to execute based on the value of the expression. The interpreter checks each case against the value of the expression until a match is found. If nothing matches, a default condition will be used.
switch (expression) { case condition 1: statement(s) break; case condition 2: statement(s) break; ... case condition n: statement(s) break; default: statement(s) }
Syntax:
while (expression){ Statement(s) to be executed if expression is true }
Syntax:
8|Page
The loop initialization where we initialize our counter to a starting value. The initialization statement is executed before the loop begins. The test statement which will test if the given condition is true or not. If condition is true then code given inside the loop will be executed otherwise loop will come out. The iteration statement where you can increase or decrease your counter.
You can put all the three parts in a single line separated by a semicolon.
Syntax:
for (initialization; test condition; iteration statement){ Statement(s) to be executed if test condition is true }
Function Definition:
Before we use a function we need to define that function. The most common way to define a function in JavaScript is by using the function keyword, followed by a unique function name, a list of parameters (that might be empty), and a statement block surrounded by curly braces. The basic syntax is shown here:
<script type="text/javascript">
9|Page
Calling a Function:
To invoke a function somewhere later in the script, you would simple need to write the name of that function as follows:
Exceptions
Exceptions can be handled with the common try/catch/finally block structure.
<script type="text/javascript"> <!-try { statementsToTry } catch ( e ) { catchStatements } finally { finallyStatements } //--> </script>
The try block must be followed by either exactly one catch block or one finally block (or one of both). When an exception occurs in the catch block, the exception is placed in e and the catch block is executed. The finally block executes unconditionally after try/catch.
10 | P a g e
<head> <script type="text/javascript"> <!-var retVal = confirm("Do you want to continue ?"); if( retVal == true ){ alert("User wants to continue!"); return true; }else{ alert("User does not want to continue!"); return false; } //--> </script> </head>
<head> <script type="text/javascript"> <!-var retVal = prompt("Enter your name : ", "your name here"); alert("You have entered : " + retVal ); //--> </script> </head>
Page Re-direction
This is very simple to do a page redirect using JavaScript at client side. To redirect your site visitors to a new page, you just need to add a line in your head section as follows:
11 | P a g e
<head> <script type="text/javascript"> <!-//--> </script> </head> <body> <form> <input type="button" value="Print" onclick="window.print()" /> </form> </body>
Storing Cookies:
The simplest way to create a cookie is to assign a string value to the document.cookie object, which looks like this:
Syntax:
document.cookie = "key1=value1;key2=value2;expires=date";
Reading Cookies:
Reading a cookie is just as simple as writing one, because the value of the document.cookie object is the cookie. So you can use this string whenever you want to access the cookie. The document.cookie string will keep a list of name=value pairs separated by semicolons, where name is the name of a cookie and value is its string value.
12 | P a g e
You did not like the name of your domain and you are moving to a new one. Same time you want to direct your all visitors to new site. In such case you can maintain your old domain but put a single page with a page re-direction so that your all old domain visitors can come to your new domain. You have build-up various pages based on browser versions or their names or may be based on different countries, then instead of using your server side page redirection you can use client side page redirection to land your users on appropriate page. The Search Engines may have already indexed your pages. But while moving to another domain then you would not like to lose your visitors coming through search engines. So you can use client side page redirection. But keep in mind this should not be done to make search engine a fool otherwise this could get your web site banned.
Example 2:
You can show an appropriate message to your site visitors before redirecting them to a new page. This would need a bit time delay to load a new page. Following is the simple example to implement the same:
<head> <script type="text/javascript"> <!-function Redirect() { window.location="http://www.newlocation.com"; } document.write("You will be redirected to main page in 10 sec."); setTimeout('Redirect()', 10000); //--> </script> </head>
13 | P a g e
Example 3:
Following is the example to redirect site visitors on different pages based on their browsers :
<head> <script type="text/javascript"> <!-var browsername=navigator.appName; if( browsername == "Netscape" ) { window.location="http://www.location.com/ns.htm"; } else if ( browsername =="Microsoft Internet Explorer") { window.location="http://www.location.com/ie.htm"; } else { window.location="http://www.location.com/other.htm"; } //--> </script> </head>
Syntax errors:
Syntax errors, also called parsing errors, occur at compile time for traditional programming languages and at interpret time for JavaScript. For example, the following line causes a syntax error because it is missing a closing parenthesis:
Runtime errors:
Runtime errors, also called exceptions, occur during execution (after compilation/interpretation).
14 | P a g e
Logical errors:
Logic errors can be the most difficult type of errors to track down. These errors are not the result of a syntax or runtime error. Instead, they occur when you make a mistake in the logic that drives your script and you do not get the result you expected. You can not catch those errors, because it depends on your business requirement what type of logic you want to put in your program.
<script type="text/javascript"> <!-try { // Code to run [break;] } catch ( e ) { // Code to run if an exception occurs [break;] }[ finally { // Code that is always executed regardless of // an exception occurring }] //--> </script>
The try block must be followed by either exactly one catch block or one finally block (or one of both). When an exception occurs in the try block, the exception is placed in e and the catch block is executed. The optional finally block executes unconditionally after try/catch.
Examples:
Here is one example where we are trying to call a non existing function this is causing an exception raise. Let us see how it behaves without with try...catch:
15 | P a g e
<html> <head> <script type="text/javascript"> <!-function myFunc() { var a = 100; try { alert("Value of variable a is : " + a ); } catch ( e ) { alert("Error: " + e.description ); } } //--> </script> </head> <body> <p>Click the following to see the result:</p> <form> <input type="button" value="Click Me" onclick="myFunc();" /> </form> </body> </html>
To understand it in better way you can Try it yourself. You can use finally block which will always execute unconditionally after try/catch. Here is an example:
<html>
16 | P a g e
<html> <head> <script type="text/javascript"> <!-function myFunc() { var a = 100; var b = 0; try{ if ( b == 0 ){ throw( "Divide by zero error." ); }else{ var c = a / b; } }catch ( e ) { alert("Error: " + e ); } } //--> </script> </head> <body> <p>Click the following to see the result:</p>
17 | P a g e
<html> <head> <script type="text/javascript"> <!-window.onerror = function () { alert("An error occurred."); } //--> </script> </head> <body> <p>Click the following to see the result:</p> <form> <input type="button" value="Click Me" onclick="myFunc();" /> </form> </body> </html>
To understand it in better way you can Try it yourself. The onerror event handler provides three pieces of information to identify the exact nature of the error:
Error message . The same message that the browser would display for the given error URL . The file in which the error occurred Line number . The line number in the given URL that caused the error
<html> <head> <script type="text/javascript"> <!-window.onerror = function (msg, url, line) { alert("Message : " + msg ); alert("url : " + url ); alert("Line number : " + line ); } //-->
18 | P a g e
Basic Validation - First of all, the form must be checked to make sure data was entered into each form field that required it. This would need just loop through each field in the form and check for data. Data Format Validation - Secondly, the data that is entered must be checked for correct form and value. This would need to put more logic to test correctness of data.
We will take an example to understand the process of validation. Here is the simple form to proceed :
<html> <head> <title>Form Validation</title> <script type="text/javascript"> <!-// Form validation code will come here. //--> </script> </head> <body> <form action="/cgi-bin/test.cgi" name="myForm" onsubmit="return(validate());"> <table cellspacing="2" cellpadding="2" border="1"> <tr>
19 | P a g e
<script type="text/javascript"> <!-// Form validation code will come here. function validate() { if( document.myForm.Name.value == "" ) { alert( "Please provide your name!" ); document.myForm.Name.focus() ; return false; } if( document.myForm.EMail.value == "" ) { alert( "Please provide your Email!" ); document.myForm.EMail.focus() ; return false; } if( document.myForm.Zip.value == "" || isNaN( document.myForm.Zip.value ) || document.myForm.Zip.value.length != 5 ) {
20 | P a g e
<script type="text/javascript"> <!-function validateEmail() { var emailID = document.myForm.EMail.value; atpos = emailID.indexOf("@"); dotpos = emailID.lastIndexOf("."); if (atpos < 1 || ( dotpos - atpos < 2 )) { alert("Please enter correct email ID") document.myForm.EMail.focus() ; return false; } return( true ); } //--> </script>
To understand it in better way you can Try it yourself.
Navigator Properties:
21 | P a g e
appCodeName This property is a string that contains the code name of the browser, Netscape for Netscape and Microsoft Internet Explorer for Internet Explorer. appVersion This property is a string that contains the version of the browser as well as other useful information such as its language and compatibility. This property contains the two-letter abbreviation for the language that is used by the browser. Netscape only. This property is an array that contains all MIME types supported by the client. Netscape only. This property is a string that contains the platform for which the browser was compiled."Win32" for 32-bit Windows operating systems This property is an array containing all the plug-ins that have been installed on the client. Netscape only. This property is a string that contains the code name and version of the browser. This value is sent to the originating server to identify the client
language
mimTypes[]
platform[]
plugins[]
userAgent[]
Navigator Methods:
There are several Navigator-specific methods. Here is a list of their names and descriptions: Method javaEnabled() Description This method determines if JavaScript is enabled in the client. If JavaScript is enabled, this method returns true; otherwise, it returns false. This method makes newly installed plug-ins available and populates the plugins array with all new plug-in names. Netscape only.
plugings.refresh
preference(name,value) This method allows a signed script to get and set some Netscape preferences. If the second parameter is omitted, this method will return the value of the specified preference; otherwise, it sets the value. Netscape only. taintEnabled() This method returns true if data tainting is enabled and false otherwise.
22 | P a g e
<html> <head> <title>Browser Detection Example</title> </head> <body> <script type="text/javascript"> <!-var userAgent = navigator.userAgent; var opera = (userAgent.indexOf('Opera') != -1); var ie = (userAgent.indexOf('MSIE') != -1); var gecko = (userAgent.indexOf('Gecko') != -1); var netscape = (userAgent.indexOf('Mozilla') != -1); var version = navigator.appVersion; if (opera){ document.write("Opera based browser"); // Keep your opera specific URL here. }else if (gecko){ document.write("Mozilla based browser"); // Keep your gecko specific URL here. }else if (ie){ document.write("IE based browser"); // Keep your IE specific URL here. }else if (netscape){ document.write("Netscape based browser"); // Keep your Netscape specific URL here. }else{ document.write("Unknown browser"); } // You can include version to along with any above condition. document.write("<br /> Browser version info : " + version ); //--> </script> </body> </html>
To understand it in better way you can Try it yourself.
Syntax:
Creating a String object:
23 | P a g e
String Properties:
Here is a list of each property and their description. Property constructor length prototype Description Returns a reference to the String function that created the object. Returns the length of the string. The prototype property allows you to add properties and methods to an object.
String Methods
Here is a list of each method and its description. Method charAt() charCodeAt() Description Returns the character at the specified index. Returns a number indicating the Unicode value of the character at the given index. Combines the text of two strings and returns a new string. Returns the index within the calling String object of the first occurrence of the specified value, or -1 if not found. Returns the index within the calling String object of the last occurrence of the specified value, or -1 if not found. Returns a number indicating whether a reference string comes before or after or is the same as the given string in sort order. Used to match a regular expression against a string. Used to find a match between a regular expression and a string, and to replace the matched substring with a new substring. Executes the search for a match between a regular expression and a specified string.
concat() indexOf()
lastIndexOf()
localeCompare()
match() replace()
search()
24 | P a g e
substr()
substring()
toLocaleLowerCase() The characters within a string are converted to lower case while respecting the current locale. toLocaleUpperCase() The characters within a string are converted to upper case while respecting the current locale. toLowerCase() toString() toUpperCase() valueOf() Returns the calling string value converted to lower case. Returns a string representing the specified object. Returns the calling string value converted to uppercase. Returns the primitive value of the specified object.
25 | P a g e
strike()
sub() sup()
Syntax:
Creating a Array object:
fruits[0] is the first element fruits[1] is the second element fruits[2] is the third element
Array Properties:
Here is a list of each property and their description.
26 | P a g e
length prototype
Array Methods
Here is a list of each method and its description. Method concat() Description Returns a new array comprised of this array joined with other array(s) and/or value(s). Returns true if every element in this array satisfies the provided testing function. Creates a new array with all of the elements of this array for which the provided filtering function returns true. Calls a function for each element in the array. Returns the first (least) index of an element within the array equal to the specified value, or -1 if none is found. Joins all elements of an array into a string. Returns the last (greatest) index of an element within the array equal to the specified value, or -1 if none is found. Creates a new array with the results of calling a provided function on every element in this array. Removes the last element from an array and returns that element.
every()
filter()
forEach() indexOf()
join() lastIndexOf()
map()
pop()
27 | P a g e
reduce()
reduceRight()
reverse()
Syntax:
Here are different variant of Date() constructor:
28 | P a g e
Note: Paramters in the brackets are always optional Here is the description of the parameters:
No Argument: With no arguments, the Date( ) constructor creates a Date object set to the current date and time. milliseconds: When one numeric argument is passed, it is taken as the internal numeric representation of the date in milliseconds, as returned by the getTime( ) method. For example, passing the argument 5000 creates a date that represents five seconds past midnight on 1/1/70. datestring:When one string argument is passed, it is a string representation of a date, in the format accepted by the Date.parse( ) method. 7 agruments: To use the last form of constructor given above, Here is the description of each argument: 1. year: Integer value representing the year. For compatibility (in order to avoid the Y2K problem), you should always specify the year in full; use 1998, rather than 98. 2. month: Integer value representing the month, beginning with 0 for January to 11 for December. 3. date: Integer value representing the day of the month. 4. hour: Integer value representing the hour of the day (24-hour scale). 5. minute: Integer value representing the minute segment of a time reading. 6. second: Integer value representing the second segment of a time reading. 7. millisecond: Integer value representing the millisecond segment of a time reading.
Date Properties:
Here is a list of each property and their description. Property constructor prototype Description Specifies the function that creates an object's prototype. The prototype property allows you to add properties and methods to an object.
Date Methods:
Here is a list of each method and its description. Method Date() getDate() Description Returns today's date and time Returns the day of the month for the specified date according to
29 | P a g e
getTimezoneOffset() getUTCDate()
getUTCDay()
getUTCFullYear() getUTCHours()
getUTCMilliseconds()
getUTCMinutes()
getUTCMonth()
getUTCSeconds()
30 | P a g e
setDate()
setUTCDate()
toDateString() toGMTString()
31 | P a g e
toSource()
Date.UTC( )
Syntax:
32 | P a g e
Math Properties:
Here is a list of each property and their description. Property E LN2 LN10 LOG2E LOG10E PI Description Euler's constant and the base of natural logarithms, approximately 2.718. Natural logarithm of 2, approximately 0.693. Natural logarithm of 10, approximately 2.302. Base 2 logarithm of E, approximately 1.442. Base 10 logarithm of E, approximately 0.434. Ratio of the circumference of a circle to its diameter, approximately 3.14159. Square root of 1/2; equivalently, 1 over the square root of 2, approximately 0.707. Square root of 2, approximately 1.414.
SQRT1_2
SQRT2
Math Methods
Here is a list of each method and its description. Method abs() acos() asin() atan() atan2() Description Returns the absolute value of a number. Returns the arccosine (in radians) of a number. Returns the arcsine (in radians) of a number. Returns the arctangent (in radians) of a number. Returns the arctangent of the quotient of its arguments.
33 | P a g e
floor() log() max() min() pow() random() round() sin() sqrt() tan() toSource()
Syntax:
A regular expression could be defined with the RegExp( ) constructor like this:
34 | P a g e
pattern: A string that specifies the pattern of the regular expression or another regular expression. attributes: An optional string containing any of the "g", "i", and "m" attributes that specify global, case-insensitive, and multiline matches, respectively.
Brackets:
Brackets ([]) have a special meaning when used in the context of regular expressions. They are used to find a range of characters. Expression [...] [^...] [0-9] [a-z] [A-Z] [a-Z] Description Any one character between the brackets. Any one character not between the brackets. It matches any decimal digit from 0 through 9. It matches any character from lowercase a through lowercase z. It matches any character from uppercase A through uppercase Z. It matches any character from lowercase a through uppercase Z.
The ranges shown above are general; you could also use the range [0-3] to match any decimal digit ranging from 0 through 3, or the range [b-v] to match any lowercase character ranging from b through v.
Quantifiers:
The frequency or position of bracketed character sequences and single characters can be denoted by a special character. Each pecial character having a specific connotation. The +, *, ?, and $ flags all follow a character sequence. Expression p+ p* p? p{N} p{2,3} Description It matches any string containing at least one p. It matches any string containing zero or more p's. It matches any string containing one or more p's. It matches any string containing a sequence of N p's It matches any string containing a sequence of two or three p's.
35 | P a g e
Examples:
Following examples will clear your concepts about matching chracters. Expression [^a-zA-Z] Description It matches any string not containing any of the characters ranging from a through z and A through Z. It matches any string containing p, followed by any character, in turn followed by another p. It matches any string containing exactly two characters.
p.p
^.{2}$
< It matches any string enclosed within <b> and </b>. b>(.*)</b> p(hp)* It matches any string containing a p followed by zero or more instances of the sequence hp.
Literal characters:
Character Alphanumeric Itself \0 \t \n \v \f \r The NUL character (\u0000) Tab (\u0009) Newline (\u000A) Vertical tab (\u000B) Form feed (\u000C) Carriage return (\u000D) Description
36 | P a g e
\uxxxx
\cX
Metacharacters
A metacharacter is simply an alphabetical character preceded by a backslash that acts to give the combination a special meaning. For instance, you can search for large money sums using the '\d' /([\d]+)000/, Here \d will search for any string of numerical character. metacharacter:
Following is the list of metacharacters which can be used in PERL Style Regular Expressions.
Description a single character a whitespace character (space, tab, newline) non-whitespace character a digit (0-9) a non-digit a word character (a-z, A-Z, 0-9, _) a non-word character a literal backspace (special case). matches a single character in the given set matches a single character outside the given set matches any of the alternatives specified
Modifiers
Several modifiers are available that can make your work with regexps much easier, like case sensitivity, searching in multiple lines etc. Modifier i m Perform case-insensitive matching. Specifies that if the string has newline or carriage return characters, the ^ and $ operators will now match against a newline boundary, instead of a string boundary Perform a global matchthat is, find all matches rather than stopping after the first match. Description
RegExp Properties:
Here is a list of each property and their description.
37 | P a g e
RegExp Methods:
Here is a list of each method and its description. Method exec() test() toSource() Description Executes a search for a match in its string parameter. Tests for a match in its string parameter. Returns an object literal representing the specified object; you can use this value to create a new object. Returns a string representing the specified object.
toString()
Learn JSP Learn Servlets Learn log4j Learn iBATIS Learn Java
Learn ASP.Net Learn HTML Learn HTML5 Learn XHTML Learn CSS
38 | P a g e
Learn JDBC Java Examples Learn Best Practices Learn Python Learn Ruby Learn Ruby on Rails Learn SQL Learn MySQL Learn AJAX Learn C Programming Learn C++ Programming Learn CGI with PERL Learn DLL Learn ebXML Learn Euphoria Learn GDB Debugger Learn Makefile Learn Parrot Learn Perl Script Learn PHP Script Learn Six Sigma Learn SEI CMMI Learn WiMAX Learn Telecom Billing
Learn HTTP Learn JavaScript Learn jQuery Learn Prototype Learn script.aculo.us Web Developer's Guide Learn RADIUS Learn RSS Learn SEO Techniques Learn SOAP Learn UDDI Learn Unix Sockets Learn Web Services Learn XML-RPC Learn UML Learn UNIX Learn WSDL Learn i-Mode Learn GPRS Learn GSM Learn WAP Learn WML Learn Wi-Fi
webmaster@TutorialsPoint.com
39 | P a g e