javascript学习随笔(编写浏览器脚本 Navigator Scripting )

在 HTML 中使用JavaScript


JavaScript能以两种方式嵌入HTML:

  • 作为语句和函数使用时,用 SCRIPT 标记
  • 作为事件处理程序使用时,用 HTML 标记

SCRIPT 标记

使用SCRIPT标记把脚本嵌入在HTML中,格式如舷:

<SCRIPT>
_ JavaScript 语句
</SCRIPT>

LANGUAGE属性作为可选项,用于指定脚本语言,用法如下:

<SCRIPT LANGUAGE="JavaScript">
_JavaScript 语句
</SCRIPT>

</SCRIPT>是<SCRIPT>的结束标志,之间可以包括任意多的JavaScript语句.

JavaScript是区分大小写档




例1 一个简单的脚本

<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
document.write("Hello net.")
</SCRIPT>
</HEAD>
<BODY>
That's all, folks.
</BODY>
</HTML>

例1中的页面显示:

Hello net.That's all folks.


代码隐匿


在不识别JavaScript的旧版本浏览器上,可以把脚本放置在注释域中,这样JavaScript代码就不会被显示出来. 把整个脚本用HTML的注释标记括起来:

<!-- 开始隐匿的脚本内容,不被旧版本浏览器显示
// 隐匿在此结束. -->

定义和调用函数

在页(page)被装载后,被置于SCRIPT标记之间的脚本被分析.函数被存贮起来,但并未执行. 函数由页内的事件调用执行.

正确理解定义函数与调用函数之间的区别是很重要的,定义函数仅仅是命名了这个函数和说明当此函数被调用时做什么,而调用函数才利用传来的参数真正执行指定的动作.


例2 一个带有函数和注释的脚本

<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!-- 开始隐匿的脚本内容,不被旧版本浏览器显示
 function square(i) {
  document.write("The call passed ",i, " to the function.","<BR>")
  return i*i
 }
  document.write("The function returned ",square(5),".")
// 隐匿在此结束. -->
</SCRIPT>
</HEAD>
<BODY>
<BR>
All done.
</BODY>

例2中的页面显示:

We passed 5 to the function.
The function returned 25.
All done.


HEAD标记


通常,应该在文档的HEAD部分定义页(page)的所有函数,因为HEAD被首先装载,这就保证了用户做任何可能调用函数的动作前,函数已全部装载.


例3 有两个函数的脚本.

<HEAD>
<SCRIPT>
<!--- hide script from old browsers
function bar() {
 document.write("<HR ALIGN='LEFT' WIDTH=25%>")
}
function output(head,level,string) {
 document.write("<H" + level + ">" + head + "</H" + level + "><p>" + string)
}
// end hiding from old browsers -->
</SCRIPT>
</HEAD>

<BODY>
<SCRIPT>
<!--- hide script from old browers
document.write (bar(),output("Make Me Big",3,"Make me ordinary."))
// end hiding from old browsers -->
</SCRIPT>
<P>
Thanks.
</BODY>

例3的结果:

Make Me Big
Make me ordinary.undefinedundefined
Thanks.


引号


用单引号(')把字符串常量括起来,用双引号把属性的值括起来,这样脚本能够把二者区分开. 在上个例子中, 函数bar中,常量left被放在属性值.再举一个例子:

<INPUT TYPE="button" VALUE="Press Me" onClick="myfunc('astring')">


编写事件处理程序脚本(Scripting Event Handlers)


Navigator上的JavaScript应用程序大部分是事件驱动的,事件常常是用户动作的结果. 例如: 按动按钮是一个事件, 结果是把focus赋与一个form元素.Navigator能够识别一组特定的事件. 你可以定义event handlers脚本,这些脚本在事件发生时会被自动执行.

事件处理程序是作为HTML标记的属性放在文档中的,把要执行JavaScript代码赋给HTML标记. 语法如下:

<TAG eventHandler="JavaScript Code">

其中, TAG是HTML的某一标记, eventHandler是事件处理程序的名称.

例如, 假定已创建了一个名为compute的JavaScript函数,你可以把对该函数的调用赋给这个按钮的onClick事件处理程序,从而实现当用户按此按钮时,Navigator执行函数compute.

<INPUT TYPE="button" VALUE="Calculate" onClick="compute(this.form)">

你可以把任何JavaScript语句放在onClick后的引号内,多个语句之间用分号隔开.这些语句只在当用户按动此按钮时才被执行.

一般说来,把自己的事件处理程序定义成函数是一种好习惯,因为:

  • 这使你的代码模块化--- 同一个函数可以作为多个不同item的事件处理程序.
  • 这使你的代码容易读懂.

请注意,在此例中,使用this.form来引用当前form, 关键字this用来引用当前对象,此处即指button对象,于是this.form结构被用来引用包含此button的form. 上例中onClick事件处理程序是以this.form(当前form)为参数调用compute()函数.

能用于HTML标记中的事件如下:

  • Focus, Blur, Change事件: 文本域,文本区和选择
  • Click事件: 按钮,无线按钮,核对框,递交按钮,复位按钮,链接
  • Select事件: 文本域,文本区
  • MouseOver事件: 链接

如果一事件可用在HTML标记里, 则可以给它定义事件处理程序.通常事件处理程序的名称是以on开头,后跟事件名称. 如, Focus的处理程序名为onFocus.

许多对象有模拟事件的方法(method).如,button有一个名为click的方法能模拟按钮被按下. 注意: 模拟事件的方法不能触发事件处理程序.如方法click并不能触发事件处理程序onClick. 但是,你可以直接调用事件处理程序(如,在脚本中,显式调用onClick).










































事件 何时发生 事件处理程序
blur 用户将input focus从form元素上移去 onBlur
click 用户在form元素或连接上接动鼠标 onClick
change 用户改变了文本,文本区或选择元素的值 onChange
focus 用户把input focus赋给form元素 onFocus
load 用户把页装入Navigato onLoad
mouseover 用户把鼠标光标从link或anchor上移过 onMouseOve
select 用户选择了form元素的输入域 onSelect
submit 用户提交了一个form onSubmit
unload 用户退出此页 onUnload




例4 有一个form和一个event handler属性的脚本

<HEAD>
<SCRIPT LANGUAGE="JavaScript">
function compute(form) {
 if (confirm("Are you sure?"))
  form.result.value=eval(form.expr.value)
 else
  alert("Please come back again")
}
</SCRIPT>
</HEAD>

<BODY>
<FORM>
Enter an expression:
<INPUT TYPE="text" NAME="expr" SIZE=15>
<INPUT TYPE="button" VALUE="Calculate" ONCLICK="compute(this.form)">
<BR>
Result:
<INPUT TYPE="text" NAME="expr" SIZE=15>
<BR>
</FORM>
</BODY>

例4中的页面显示

function compute(form) {
 if (confirm("Are you sure?"))
  form.result.value=eval(form.expr.value)
 else
  alert("Please come back again")
}

Enter an expression:
Result:




例5 有一个form的脚本, event handler属性置于BODY标记中

<HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--- hide script from old browsers
function checkNum(str,min,max) {
if (str=="")
 alert("Enter a number in the field, please.")
 return false
 }
for (var i=0; i<str.length;i++) {
 var ch=str.substring(i,i+1)
 if (ch < "0" || ch > "9") {
  alert("Try a number , please.")
  return false
  }
}

var val=parseInt(str, 10)
if ((val <min ) || (val> max)) {
 alert("Try a number from 1 to 10.")
 return false
}
 return true
}

function thanks() {
 alert("Thank you for your input.")
}
// end hiding from old browsers -->
</SCRIPT>
</HEAD>

<BODY>
<FORM NAME="ex5">
Enter a small number :
<INPUT NAME="num"
 onChange="if (!checkNum(this.valu,1,10))
 {this.focus();this.select; else thanks()}">
</FORM>
</BODY>

例5中的页面显示

Enter a number in the field and then click your mouse anywhere OUTSIDE of the field. Depending on what you enter,you will be prompted to enter another number,or thanked.

Enter a small number :


技巧与技术


本节介绍几种有用的编写脚本的技术

更新页(Updating Pages)

在Navigator上JavaScript是按从页的顶部到下的顺序生成结果. 一旦有些东西被重新设计(format),你只能靠重新装载此页的办法来改变,目前,你只能更新整 个页, 而不能只更新某一部分. 但是你可以单独更新frame中的"sub-window".

打印

目前, 还不能把用JavaScript产生的输出打印出来. 例如,若你的页上有如下内容,

<P>This is some text
<SCRIPT>document.write("<P>And some generated text")</SCRIPT>

当打印时,你只会打出"This is some text", 即使你能在屏幕上看到两行.

使用引号

一定要区分双引号和单引号,因为在HTML中事件处理程序必须用双引号 括起来,参数用单引号,例如:

<FORM NAME="myform">
<INPUT TYPE="button" NAME="button1" VALUE="Open Sesame!"
onClick="window.open('stmtsov.html', 'newWin','toolbar=no,directories=no')">
</FORM>

另外,你可以用前置反斜线(\)对引号进行转义.

定义函数

在HTML页的HEAD部分定义全部函数是一个好习惯.这样,在显示任何内容之前, 所有函数均已定义.否则在页还在装载时,用户可能做一些事情触发事件处理程序, 调用了未定义函数,将导致错误.

创建数组

数组是一个有序的值的集合,利用数组名和索引来引用.例如,一个名为emp的数组存放着雇员的名字,并按雇员编号索引.于是,emp[1]是1号雇员,emp[2]是2号雇员, 依次类推.

JavaScript中没有明确的数组数据类型,但由于数组与对象有类似之处(见 JavaScript Object Model),在JavaScript中,很容易创建数组.你可以定义一个 数组对象类型如下:

function MakeArray(n) {
 this.length=n;
 for (var i=1; i <= n; i++)
  this[i] = 0
  return this
 }
}

这样就定义了一个数组,第一个属性length表示数组中元素个数(索引为0),其余各属性初始值为0,索引为大于等于1的整数.

调用new时带上数组名和数组元素的个数,就创建了一个数组.

emp=new makeArray(20);

该语句创建了一个名为emp的数组,有20个元素,初始值为0.

操作数组(Populating an Array)

通过给数组元素赋值的办法来操作数组.如:

emp[1]="Casey Jones"
emp[2]="PHil Lesh"
emp[3]="August West"

等等.

还可以创建对象的数组.如,定义一个名为Employees的对象类型:

function Employee(empno,name,dept) {
 this.empo= empno;
 this.name= name;
 this.dept= dept;
}

下列语句则创建了一个此对象的数组:

emp=new MakeArray(3)
emp[1]=new Employee(1,"Casey Jones", "Engineering")
emp[2]=new Employee(2,"Phil Lesh", "Music")
emp[3]=new Employee(3,"August",""Admin)

这时,利用函数show_props(在JavaScript Object Model中定义)来显示该 数组中的对象, 如下:

for (var n=1; n<=3; n++) {
 document.write(show_props(emp[n],"emp")+"");
}

(0)

相关推荐

  • BOM之navigator对象和用户代理检测

    前面的话 navigator对象现在已经成为识别客户端浏览器的事实标准,navigator对象是所有支持javascript的浏览器所共有的.本文将详细介绍navigator对象和用户代理检测 属性 与其他BOM对象的情况一样,每个浏览器中的navigator对象也都有一套自己的属性.下表列出了存在于所有浏览器中的属性和方法,以及支持它们的浏览器版本 属性                                              说明 appCodeName           

  • JavaScript中的Navigator浏览器对象

    navigator 浏览器对象,包含了正在使用的 Navigator 的版本信息.反映了当前使用的浏览器的资料.JavaScript 客户端运行时刻引擎自动创建 navigator 对象. 更详细的信息可以去查msdn或者Navigator 2.0以后的说明文档,这里我们之做个简单的说明 包括一下几大属性: appCodeName 返回浏览器的"码名"(?),流行的 IE 和 NN 都返回 'Mozilla'. 下面的例子显示了 appCodeName 属性的值: document.w

  • JS判断浏览器之Navigator对象

    The Navigator Object 导航对象 The JavaScript Navigator object contains all information about the visitor's browser. We are going to look at two properties of the Navigator object: JS导航对象包含所有有关访问这者浏览器的信息.我们将看看两个导航对象的产物: appName -  holds the name of the br

  • Flex中TabNavigator设置Tabs样式思路及源码

    1.设计思路 (1)设计一个TabNavigator,其中包含两个Tabs: (2)设置Tabs样式 2.设计源码 Tabs.mxml: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex

  • javascript宿主对象之window.navigator详解

    window.navigator用来反映浏览器及其功能信息的对象. // 检测浏览器版本信息 function getBrowserInfo(){ var Sys = {}; var ua = window.navigator.userAgent.toLowerCase(); var re =/(msie|firefox|chrome|opera|version).*?([\d.]+)/; var m = ua.match(re); Sys.browser = m[1].replace(/ver

  • 微信小程序 wxapp导航 navigator详解

    微信小程序 wxapp导航 navigator 最近微信小程序非常火,朋友圈,微博,论坛等地方都在刷屏,因为这是搞前端的春天,前端工程师可以赚一把了,所以业余就学习了微信小程序的知识,这里记录下 : navigator 属性名 类型 默认值 说明 url String   应用内的跳转链接 redirect Boolean false 是否关闭当前页面 hover-class String navigator-hover 指定点击时的样式类,当hover-class="none"时,没

  • 微信小程序 navigator 组件实例详解

    navigator跳转分为两个状态一种是关闭当前页面一种是不关闭当前页面.用redirect属性指定. 主要属性: wxml <navigator url="../index/index">点击跳转不关闭当前页面</navigator> <navigator url="../logs/logs" redirect="true" >点击跳转关闭当前页面</navigator> 相关文章: hello

  • javascript通过navigator.userAgent识别各种浏览器

    原理:根据navigator.userAgent返回值识别 实现: 复制代码 代码如下: function validBrowser(){ var u_agent = navigator.userAgent; var browser_name='Failed to identify the browser'; if(u_agent.indexOf('Firefox')>-1){ browser_name='Firefox'; }else if(u_agent.indexOf('Chrome')>

  • javascript学习随笔(编写浏览器脚本 Navigator Scripting )

    在 HTML 中使用JavaScript JavaScript能以两种方式嵌入HTML: 作为语句和函数使用时,用 SCRIPT 标记 作为事件处理程序使用时,用 HTML 标记 SCRIPT 标记 使用SCRIPT标记把脚本嵌入在HTML中,格式如舷: <SCRIPT> _ JavaScript 语句</SCRIPT> LANGUAGE属性作为可选项,用于指定脚本语言,用法如下: <SCRIPT LANGUAGE="JavaScript"> _Ja

  • javascript学习随笔(使用window和frame)的技巧

    JavaScript允许创建和打开代表HTML文本, form对象和frame的窗口. window对象是JavaScript客户层次结构的最顶层对象, form元素和全部JavaScript代码都是存在于文档中,而文档被装载进窗口. 为了理解窗口怎样工作,你可以控制操作这些窗口. 打开和关闭窗口 当用户启动(launch)Navigator时,将自动创建一个窗口.用户还可以使用Navigator的File菜单上的New Web Browser打开一个窗口, 可以用Navigator的File菜

  • JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)

    一.JavaScript简介 JavaScript是一种解释执行的脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型,它遵循ECMAScript标准.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,主要用来给HTML增加动态功能. 几乎所有主流的语言都可以编译为JavaScript,进而能够在所有平台上的浏览器中执行,这也体现了JavaScript的强大性和在Web开发中的重要性.如Blade:一个Visual Studio扩展,可以将C#代码转

  • JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)

    //取得用户代理字符串 并全部小写. var ua = navigator.userAgent.toLowerCase(); document.write(ua); 在上篇文章给大家介绍了基于javascript代码检测访问网页的浏览器呈现引擎.平台.Windows操作系统.移动设备和游戏系统 ,感兴趣的朋友可以点击全文了解详情. 1.识别呈现引擎 引擎主要包含四种:IE.Gecko.WebKit.Opera 2.识别浏览器 主流浏览器包含四种:IE.Chrome.Firefox.Opera 3

  • 深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点

    具体一点就是编写高质量JavaScript的一些要素,例如避免全局变量,使用单变量声明,在循环中预缓存length(长度),遵循代码阅读,以及更多. 此摘要也包括一些与代码不太相关的习惯,但对整体代码的创建息息相关,包括撰写API文档.执行同行评审以及运行JSLint.这些习惯和最佳做法可以帮助你写出更好的,更易于理解和维护的代码,这些代码在几个月或是几年之后再回过头看看也是会觉得很自豪的. 书写可维护的代码(Writing Maintainable Code ) 软件bug的修复是昂贵的,并且

  • javascript学习总结之js使用技巧

    1 假如浏览器不支持JavaScript怎么办? a.为什么浏览器会不支持?大部分浏览器都有禁用脚本的功能,例如chrome. b.在js被禁用的情况下要保证网页仍能实现它的核心功能(关键的用户需求) 例子:在一个新窗口里打开链接,可以使用BOM的open()方法 function popUp(winURL) { window.open(winURL, "popup", "width=,height="); } 具体的js实现有以下几个方案: 方案一:使用javas

  • JavaScript学习笔记之DOM操作实例分析

    本文实例讲述了JavaScript学习笔记之DOM操作.分享给大家供大家参考,具体如下: 一.DOM概念 1. "D":Docment,指的是文档 2. "O":Object,指的是对象,在javascript有三种对象:用户定义对象.内建对象(JavaScript语言对象.如Math,Array).宿主对象(浏览器对象) 3. "M":Model,值得是Model,某种事物的表现形式 二.节点 1. 元素节点 :<body> <

  • nodejs编写bash脚本的终极方案分享

    目录 前言 zx库 $`command` cd() fetch() question() sleep() nothrow() chalk fs os $.shell $.quote 传递环境变量 传递数组 总结 前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义的变量shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的.举个例子: #!/bin/bash # 这里是判断变量var是否等于字符串abc,但是var这个变量

  • javascript学习笔记(一)基础知识

    基本概念 javascript是一门解释型的语言,浏览器充当解释器. js执行引擎并不是一行一行的执行,而是一段一段的分析执行. 延迟脚本 HTML4.0.1中定义了defer属性,它的用途是表明脚本在执行时不会影响页面的构造.也就是说,脚本会延迟到整个页面都解析完毕后再执行.因此,在<script>元素中设置defer属性,相当于告诉浏览器立即下载,但延迟执行.在XHTML文档中,要把defer属性设置为defer="defer" 异步脚本 html5为<scrip

  • JavaScript中解决多浏览器兼容性23个问题的快速解决方法

    一.document.formName.item("itemName") 问题 问题说明:IE下,可以使用 document.formName.item("itemName") 或 document.formName.elements ["elementName"]:Firefox 下,只能使用document.formName.elements["elementName"]. 解决方法:统一使用document.formNa

随机推荐