QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 5730|回复: 7
打印 上一主题 下一主题

JavaScript 简介

[复制链接]
字体大小: 正常 放大
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

跳转到指定楼层
1#
发表于 2005-1-26 00:23 |只看该作者 |倒序浏览
|招呼Ta 关注Ta
JavaScript 简介 3 \. w3 c% |* v+ ?" ~+ |, O
< align=center>第 1 章
+ m7 U0 J: A" U9 s5 |  C<><A><B>JavaScript 是什麽?</B> 8 F( j9 B' X& F6 H5 v* s
<>  JavaScript 是一种新的描述语言,此一语言可以被箝入 HTML 的文件之中。透过 JavaScript 可以做到回应使用者的需求事件 (如: form 的输入) 而不用任何的网路来回传输资料,所以当一位使用者输入一项资料时,它不用经过传给伺服端 (server)处理,再传回来的过程,而直接可以被客户端 (client) 的应用程式所处理。你也可以想像成有一个可执行程式在你的客端上执行一样!目前已有一些写好的程式在Internet 上你可以连过去看看,以下有一些计算器的例子,在 Nescape 上。
1 C! X+ ?0 s! [<>  JavaScript 和 Java 很类似,但到底并不一样! Java 是一种比 JavaScript 更复杂许多的程式语言,而 JavaScript 则是相当容易了解的语言。JavaScript 创作者可以不那麽注重程式技巧,所以许多 Java 的特性在 Java Script 中并不支援。如需相关的更多资讯,可以去读读 Netscape 的有关 Netscape JavaScript 之介绍。 如何执行 JaveScript?
+ o7 ?9 e& u; J5 _  m( i<><B>JavaScript 如何执行呢?</B>
$ M$ A/ _0 k: O5 r5 h1 s<>  Netscape 2.0 beta 3 版以上,就可以执行 JavaScript 的功能了,我们测试过至少beta 3 版以上可以,或许 beta 2 版就已经有此功能了(猜的)。但目前为止,除了 Netscape 外,似乎尚没有其他种类的 WWW 浏览器有此一功能。不过,资讯科技变化脚步是很快的,也许说著说著就有一大堆出来了。如果你没有 Netscape Navigator 2.0 的话,建议去取得该程式。目前最新版是 Netscape 2.01 版!而 Netscape 3.0 beta4 版都出来了 呢!
; P9 g% k% m; X8 G<>  范例 1:以下我们就以一些例子来告诉你如何将 JavaScript 写在 HTML 文件中,并且体会一下新语言的特性,我们从第一个例子开始:如何用 JavaScript 印出一串文字至HTML 文件中:
  m+ W- ]5 j' }) [<>  &lt;html&gt;
* Y( Q% N8 O" R8 a1 w<>  &lt;head&gt;My first JavaScript!&lt;/head&gt; 1 S, Y8 H3 b* `* Z. @5 _( E
<>  &lt;body&gt; 4 j, c! W- L( ?4 v
<>  &lt;br&gt; 2 {4 V9 E' A0 n; ?9 W: n. [
<>  This is a normal HTML document. - \, v, Z7 |3 V( P9 H
<>  &lt;br&gt; ; h" T& L4 T3 i0 K
<>  &lt;script language="LiveScript"&gt; : _; H. Q$ c0 H
<>  document.write("这是以 JavaScript 印出的!") 7 L7 I" I6 t$ ?) s+ X8 u
<>  &lt;/script&gt; 4 x, \# F7 Q- n6 q
<>  &lt;br&gt; 1 h4 m& n$ O* V9 R5 l
<>  Back in HTML again. ( \3 x+ g2 n7 [1 [  ?9 P: N/ O: s
<>  &lt;/body&gt;
* Z4 J- U4 L( J$ R8 k! E3 o" y9 p<>  &lt;/html&gt;
) |1 M0 l7 X! `1 |, W. I% @<>  如果你使用的 WWW 浏览器是 Netscape 2.0 beta 3 以上版本的话,那你就可以看到相关的结果,而如果你的浏览器并非是可以支援 JavaScript 的话,那看起来就会有一些怪怪的了,以上范例的结果如下: This is a normal HTML document.
& `/ v& g- ]4 _6 n; q& _% N9 W<>  这是以 JavaScript 印出的! 3 L/ M  H+ l8 E& x  x( s
<>  Back in HTML again. 此一范例并没有太大的用处,它只是要告诉你如何使用script的标签,并如何将它置於 HTML 的文件之中而已,这个新的标签你可以特它放在文件中的任何地方。 4 W) h/ C7 g0 y
<>  范例 2:接下来下一个例子所要介绍的是有关函数 (function) 的使用。请放心,函数并非很难懂的东西,但它却相当有用。函数通常是在 HTML 文件中 部份被呼叫,而理所当然地,它最好事先被宣告并放在 HTML 文件中 <body>的部份。好让在 <body> 部分中使用到函数时,它已确定被读取住来。另外,<script> 标签的有关描述语法剖份,你可以用注解的符号将它括起来,以免旧版或无法读取 JavaScript 的浏览器读到,而误会了意思!
" N3 n- |9 J3 H4 J4 _" O: `<FORM><INPUT> </FORM>, _( _, m% H+ l) C! m% K; ?3 [
<>  如果你是使用 Netscape 2.0 beta 3 以上的浏览器,那以上 JavaScript 语法部份的结果如下,你可以试著按按钮看看有何结果产生!   ~2 y. q$ D; c) [5 C" p
<FORM><INPUT></FORM>/ Q4 P: r3 T- [- W
<>  2 V* K& X3 c3 g; P
<>  在范例 2 中,将会产生一个按钮,当你用滑鼠去按它的时候,应该会出现一个视窗上面有"嗨! 你好"的字串,如何?不错吧!这个结果是如何产生的呢?首先,在 <head>内的函数会被载入并存於记忆体中,接著一个新的 <form>标签 <input type ="button".....>将产生一个接钮。然後,你可以在後面看到 'onClick' 的指令,这就是告诉浏览器,当该按钮被按时,应会执行onClick 後的函数 'pushbutton()',而这个函数在刚刚程式被载入时就已安放在记忆体中了!请注意,在这个函数中我们用到了个新东西─ alert 的 method,是 JavaScript 事先定义好的,它会以对话视窗产生内涵的讯息,并有一"确定"(OK)的按钮。 JavaScript 定义了许多的 method,你可以连至 Netscape 公司去获取较完整的讯息。我想这些 method 在不久的将来会有长长的一串可以够你学的,不过目前的 method 也已经可以做出相当多东西了!接著下个例子将告诉你如何由一个输入型表格中读入使用者的输入资料,事实上,这也是加入个函数就可以达成的。
6 D  ^9 c) s& B4 H<>  范例 3: Please enter your name:
9 ?* g+ N" ~- r; E/ K' s3 ?# Y<FORM><RE><INPUT>
4 T# S3 H" I, ~5 E  P' g
0 W8 f, w% o! M- k1 i7 _</PRE></FORM>
6 f+ W0 Y/ i7 `% f# L# @- a<>现在你可以试试结果如何: 请输入你的名字: ) E9 I, U. I& g# k
<FORM>
5 o# X4 e* q- E) s/ e<P><INPUT> </FORM>
( I7 N/ ~% f/ m( j- D<P>  在这个例子中又有新的东西了。首先,让我们注意一下,在语法中的注解部分( 的 WWW 浏览器因为不认识这些函数而产生错误。它的顺序应 该为 先,接著为注解的开头 另外要注意的一点是,语解尾那一行的开头双斜线 "//" ,不可以省略,它代表了 JavaScript 的注解,若省略了的话, ->之前的字会被误认为是 JavaScript 的指令。   g+ C, d& T+ x  ?1 o( [3 `( L5 d
<P>  这个例子可以让使用者输入一段文字,然後再输入完毕後经由 "onBlur" 事件函数侦知,於是呼叫 Getname(Str)这个函数来加以取得输入字串,并将它显示在对话视窗上!函数 Getname(this.value) 中的 "this.value" 是你在文字输入格式中所输入的值。 1 J8 O9 J' T" d2 ^; u% x: W
<P>  范例 4::这个范例更是帅了!我们在 HTML 文件档完成了以後,常会加上一行文件最後修改的日期,现在你可不用担心每次都要去改或是忘了改了。你可以很简单的写一个如下的描述语法程式,就可以自动的为你每次产生最後修改的日期了: This is a simple HTML- page.
+ ~  }+ B- r( ]  f# x! p<P>  Last changes: 1 j" {1 q# E9 z& j$ i& o6 R
<P>   02/17/2000 21:28:20
# N9 x9 M. }  V3 A1 v, _' J<P>  以上的 document.lastModified 参数在 Netscape 2.0 beta 2 版时是被写成documeut.lastmodified 的,然而,之後的版本就改为 document.lastModified,所以注意一下 ;JavaScript 本身是会区分大小写的, lastmodified 与 lastModified在它看来是不同的结果。 最後,在这一部分结束之前,要提醒你一点,像范例 4 ,的用法并非每一部机器都是一样的,例如:PC 上跑得很正确的,在工作站上不一定会有相同的结果,所以,或许你仍得测一测不同机器的结果才会有所定论。当然,这一切是因为 JavaScript 还正在发展的原因,最新的讯息还是得去拜访一下Netscape 公司才知道。也许你也不用奇怪,当你隔周再来访时,JavaScript 可能又作了相当大的改变了呢! </P>
zan
转播转播0 分享淘帖0 分享分享0 收藏收藏0 支持支持0 反对反对0 微信微信
韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JavaScript 简介 <>第 2 章 ' X* T2 n6 u/ x

4 h0 ^  ~- C0 T1 W' I</P><DIV align=center><TABLE cellSpacing=0 cellPadding=0 width=500 border=0><TR><TD>  范例 5:在这一部分首先要为你展示的 JavaScript 特性是将你的滑鼠移到这个不同颜色的连结上面,此时看看浏览器下的状态列有何结果。然後这样的功能我们可以与 JavaScript 的功能相结合。好,现在再将你的滑鼠移到本处不同颜色的连结上面,你应该会发现有一个视窗出现,是吧?!如何!怎麽做到的呢?以下就是这一个连结的作法: &lt;a href="tpage.htm" onMouseOver="window.status='Just another stupid link...'; return true"&gt;在这儿你只要在传统 &lt;a&gt; 的标签中加入 onMouseOver 的 method,就可达成你要的效果了。这里的 window.status 是用来让你可以在 WWW 浏览器的状态列上显示一些讯息用的。在语法中,你可以看到讯息部分是用 ' 括起来的部分,而非以 " 括起来,在讯息部分结束之後,必须加上 ; return true。 好了,利用以上的特性可以很简单的完成第二个连结的例子!相当简单,以 onMouseOver 的 method 然後配合事件发生时去呼叫函数 hello() 就行了,不再多加解释了,作法如下: &lt;html&gt; <>  &lt;head&gt; <>  &lt;script language="LiveScript"&gt; <>  &lt;!-- Hiding <>   function hello() { <>   alert("哈罗!"); <>   } <>  &lt;/script&gt; <>  &lt;/head&gt; <>  &lt;body&gt; <>  &lt;a href="" onMouseOver="hello()"&gt;link&lt;/a&gt; <>  &lt;/body&gt; <>  &lt;/html&gt; <>  范例 6: 接下来我们要告诉你一个使用日期和时间的例子。在第一部分中,你已看过了 lastModified 的用法和作法。现在要告诉你的并非是印出网路上伺服器或文件修改日期,而是你个人客户端机器的日期和时间。以下就是执行结果: 现在时间是: 15:32 <>  今天日期为: 10/11/98 做法如下: <>  现在时间是: 14:27今天日期为: 5/11/98在本例中,我们必需首先建立一个日期变数,这可以由 today= new Date()来完成。如果没有特别指定时间与日期的话,浏览器将会采用本地客户端机器的时间,若将它放入变数 today 中。这儿要注意的是:我们并没有宣告 today 这个变数的型态,这和 Java 或其他的程式语言在用到变数之前必需先加以宣告的方式有相当大的不同。在完成 today 的日期变数後,我们等於建立了一个具有本地时间与日期的物件(object)。接著就可以使用 get... 的 method 以取得 today 这个物件的时间和日期。请注意 getMonth 这个 method 所取得的月份范围是由 0~11,所以必须加 1 以代表真正的 1 月至 12 月。看完以上的例子後,想想你可以使你的文件变得有点智慧,例如:某个文件有时效限制的话,你可以利用我们在上一部份的范例 4中所提到的功能和这一个范例中所学习到的功能,设计一个让你的文件在 第10天以後读到的话就会告诉读者:"喂!这篇已过时了!"的程式,试试看,并不难! <>  除以上功能外,在建立日期物件时你也可以事先设定日期如下:docStarted= new Date(96,0,13)首先是年(西元),接著是月(但记得减 1),再接著是日。同样的方法也可以加上时间的设定,如下:docStarted = new Date(96,0,13,10,50,0)前三个是日期的年、月、日,接著是时、分、秒。最後,我们必须提醒你,JavaScript 并没有实际的日期型态,但是它却能毫不费力地显示出日期和时间,原因是它是从 1 / 1 / 1970 0:0h 开始以 ms(milli seconds) 来计算目前的时间的,这听起来似乎有些复杂,但你倒不用担心,它有标准的共用函数可以 计算,你只要知道如何用就可以了! <>  范例 7: 接下来我们要为你介绍一个可以产生乱数的函数,也是以 JavaScript 所写的。这个函数只是利用了一点小技巧而已,而这种技巧在大部分的编译器(compiler)中,大都是如此(或类似)计算出乱数来的。我相信 JavaScript 最後应也会以相似的方法来产生这样的 method ,如果它会提供这样功能的话。以下是此函数的结果: 这是一个计算产生的乱数: .17577887797942549 以下是这个作法的写法: This is a random number:0.7525659072678291 我们的做法是以上一个范例中的时间函数;它会出现一个很大的数,利用这个数再加以运算即可!例如:将它拿来做正弦函数(sin)的运算,得到的数再做绝对值的运算,结果可以得到一个介於 0 与 1 间的实数。因为时间的改变是 ms 为单位,而且你绝不会获得相同的数字。不过这个做法并不适合拿来快速的连续产生一系列的乱数,但如果你是不定时,久久的用一次,那效果就不错了! <>  范例 8: JavaScript 的一个重要特点是它可以制作视窗。你可以产生一个的视窗,并且在此视窗中载入 HTML 文件,完全以 JavaScript 来航游网际网路(Internet )。接下来的范例就是告诉你如何开启一个视窗并且写点东西进去,你可先试试按一下范中之接 钮看看! <FORM><><INPUT> </FORM><>  <>原始程式如下: <FORM><RE><INPUT></PRE></FORM><>  这儿你又看到用按钮来启动函数。这次的函数 WinOpen()是藉著一个 open的 method 来产生一个新的视窗。第一对双引号("")是用来描述欲载入至视窗中的文件 URL 位置。如果留者空白的话,那就会呈现一个空白视窗,并可以透过 JavaScript 写入东西!下一对双引号内的内容是这个新开启视窗的名字,你可以喜欢给它任意一个名字,但不可加入空白,如用 Display Window 的话便会出现错误讯息,请注意。接下来的一连串双引号内所 指定的是该视窗的相关性质(properties),这些蛮有趣的,你可以指定要不要有工具棒(toolbar) 、卷轴(scrollbar),等等,例如:如果你写 toolbar = yes,那就会在你所产生出来的视窗中出现一排工具列。以下有许多你可以改变的视窗特性,请注意它们字中间不可以有空白: toolbar <>  location <>  directories <>  status <>  menubar <>  scrollbars <>  resizable <P>  copyhistory <P>  width=pixels <P>  height=pixels <P>  以上的 pixels 部分,你可以填入点数的数值,这数值是告诉浏览器这个视窗的大小。在开启视窗,并且将它称为 msg 以後,就可以开始写些东西到视窗中了。你可以写入一般正规的 HTML 语法文字。哇!这可不得了了,也就是说,你可以利用先前使用者在 form 表格中输入给你的文章直接将它回应至浏览器上来了!这些功能在几个月前大概还只能用 CGI 才能达到喔!现在你不用 CGI 也可以做了!希望你能对我的介绍感到还算不错。由於 JavaScript 尚未完全发展完成,并且很可能会再继续地做一些更动,希望这儿的范例到时都还能执行,在JavaScript 更多特性完成後,我也会继续地再为你介绍一些新的范例的! </P></TD></TR></TABLE></DIV>
回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JavaScript简介 <>第三章
$ c# {- c: J" h/ \</P><DIV align=center><TABLE cellSpacing=0 cellPadding=0 width=500 border=0><TR><TD><>  曾有许多网友问我有关JavaScript与框架(为求方便,以下均用frame表示)合用的问题。事实上, 若您同时想用frames和JavaScript的功能,首先您必需拥有Netscape Navigator 2.0 (或以上)浏览器( 至少目前是如此)。当然也有某些浏览器支援frames的功能--如:Oracle开发的PowerBrowser,但此 浏览器还只是Beta版,目前尚不支援JavaScript。首先,我稍微解释一下frames的功用。因为frames功能才开发不久,仍有许多HTML文件中未使 用这项新功能。Frames最主要功用是"分割"您的视窗,使每个"小视窗"(frame)能显示不同的HTM L文件(译按:这有点类似电视的子母画面)。更妙的是,不同frame之间可以互动(interact),也就是 说不同frame之间可以交换讯息与资料(information)。例如:假设您开了两个frames,第一个frame可 显示普通HTML文件,第二个frame可显示工具列(toolbar)。此工具列中可包含浏览您homepage所 需的各种按钮。如此一来,即使第一个frame载入了另一个HTML文件,您仍可在第二个frame中 看到工具列。现在我先将上述特性展示给您瞧瞧。请按一下下面的按钮,看一看frames的长相。(如果您是线 上观看此文件,您可能需稍候一下才看得到结果,因为scripts必需由server中载入到您的机器)。 <FORM><><INPUT> </FORM><>  <>下是此frame的写法: <>  &lt;HTML&gt; <>  &lt;HEAD&gt; <>  &lt;title&gt;Frames&lt;/title&gt; <>  &lt;/HEAD&gt; <>  &lt;FRAMESET ROWS="50%,50%"&gt; <>  &lt;FRAME SRC="frtest1.html" name="fr1"&gt; <>  &lt;FRAME SRC="frtest2.html" name="fr2"&gt; <>  &lt;/FRAMESET&gt; <>  &lt;/HTML&gt; <>  首先您必须告诉浏览器您要开几个frame?这是由 &lt;frameset...&gt; 这个标签(tag)来宣告。rows这项 参数是告诉浏览器您想将视窗分割成几列?而 cols这项参数是告诉浏览器您想将视窗分割成几 行?您也可以用很多组的 &lt;frameset...&gt; tags 将视窗分割得更复杂。以下是 Netsacpe所提到的一个范例: <>  &lt;FRAMESET COLS="50%,50%"&gt; <>  &lt;FRAMESET ROWS="50%,50%"&gt; <>  &lt;FRAME SRC="cell.html"&gt; <>  &lt;FRAME SRC="cell.html"&gt; <>  &lt;/FRAMESET&gt; <>  &lt;FRAMESET ROWS="33%,33%,33%"&gt; <>  &lt;FRAME SRC="cell.html"&gt; <>  &lt;FRAME SRC="cell.html"&gt; <>  &lt;FRAME SRC="cell.html"&gt; <>  &lt;/FRAMESET&gt; <>  &lt;/FRAMESET&gt; <FORM><><INPUT> </FORM><>  <>   上面这个例子产生了两行,而且第二行又分割成三列大小相等的空间。在第一个 &lt;frameset&gt; tag 中的 50%,50% 两项参数是用来表是frame的大小。 <>  您可以给每个frame一个"名字" (name)。frame的名字在JavaScript语法中的地位非常重要。在本 章的第一个范例中您已学到如何替frame命名。接下来您可以用 &lt;frame&gt; tag 告诉浏览器您要载 入哪一个 HTML文件。 <FORM><P><INPUT> </FORM><P>  <P>  我想您已了解frames的基本用法,接下来我们再看一个有趣的范例: 上面的按钮将显示 : 按某个frame中的按钮後,会在另一frame中写入文字。 <P>  以下是此功能的原始码: 在产生frames效果之前,您需先制作下列原始码 (frames.html): <P>  &lt;HTML&gt; <P>  &lt;HEAD&gt; <P>  &lt;title&gt;Frames&lt;/title&gt; <P>  &lt;/HEAD&gt; <P>  &lt;FRAMESET ROWS="50%,50%"&gt; <P>  &lt;FRAME SRC="frame1.html" name="fr1" noresize&gt; <P>  &lt;FRAME SRC="frame2.html" name="fr2"&gt; <P>  &lt;/FRAMESET&gt; <P>  &lt;/HTML&gt; <P>  以下是 frame1.html 的原始码: <P>  &lt;HTML&gt; <P>  &lt;HEAD&gt; <P>  &lt;script language="JavaScript"&gt; <P>  &lt;!-- Hiding <P>  function hi() { document.write("嗨!&lt;br&gt;"); } <P>  function yo() { document.write("呦!&lt;br&gt;"); } <P>  function bla() { document.write("啦 啦 啦&lt;br&gt;"); } <P>  // --&gt; <P>  &lt;/script&gt; <P>  &lt;/HEAD&gt; <P>  &lt;BODY&gt;这是第一个 frame!&lt;/BODY&gt; <P>  &lt;/HTML&gt; <P>  以下是 frame2.html 的原始码: <P>  &lt;HTML&gt; <P>  &lt;body&gt; <P>  这是第二个 frame! <P>  &lt;p&gt; <P>  &lt;FORM NAME="buttonbar"&gt; <P>  &lt;INPUT TYPE="button" VALUE="嗨" onClick="parent.fr1.hi()"&gt; <P>  &lt;INPUT TYPE="button" VALUE="呦" onClick="parent.fr1.yo()"&gt; <P>  &lt;INPUT TYPE="button" VALUE="啦" onCLick="parent.fr1.bla()"&gt; <P>  &lt;/FORM&gt; <P>  &lt;/BODY&gt; <P>  &lt;/HTML&gt; <P>  哇!这些语法越来越长了!上述的语法是如何运作的呢?当使用者载入第一个档案 (frames.html)後 ,将会产生两个frame,并且在第一个frame(命名为 'fr1')中载入frame1.html,而在第二个frame ( 命名为 'fr2')中载入frame2.html。到目前为止都只是普通的 HTML 语法。或许您已发现在 frame1.html中包含了JavaScript语法,但此JavaScript并没有马上被执行。难到这些函式(functions) 是不必要的?亦或是我懒得删除这些不必要的函式?虽然我是懒散惯的人,但这些函式确实是必 须的。它们是被位於frame2.html中之JavaScript语法所呼叫而执行的。我在frame2.html中利用Java Script语法制作了三个按钮,制作按钮来呼叫函式的方法我已在第一章提过,相信您对onClick的 用法已相当熟悉。但是...... parent.fr1 是干嘛用的?若您对物件观念已相当了解,相信它对您不是甚麽新鲜事。您可以看到frames.html同时呼叫 frame1.html 与 frame2.html两个档案,所以frames.html称为frame1.html与frame2.html的 parent (请 恕我直接用英文)。同理,这两个新的frame就称为frames.html的 child- frames。您可将这种复杂 的关系想像成阶层式架构(hierarchy)。以下我借助一个小 '图' 来厘清这种关系: <P>   frames.html parent / \ / \ / \ fr1(frame1.html) fr2(frame2.html) children <P>  当然您可依此类推,产生一些 'grandchildren' frames。 (当然,这并不是正式的名称): <P>   frames.html parent / \ / \ / \ fr1(frame1.html) fr2(frame2.html) children / \ / \ / \ gchild1 gchild2 'grandchildren' <P>  若您想由frame2.html呼叫parent- frame中的任何函数,您只要将 parent 放在您欲呼叫函数名称之 前即可。同理,若由parent- frame呼叫位於frame1.html中的函数,您只需将 fr1 放在被呼叫函数 名称之前。为什麽用 fr1 呢?原因是我们在frames.html中开了两个frame,而且将它们分别命名为 fr1和 fr2。所以我用 fr1 代表第一个frame (frame1.html)。接下来的步骤就相当容易了。当我们欲 由frame2.html ( 命名为 fr2)呼叫第一个frame中的函式时该怎麽做?由上面的"小图"您可以发现, frame1.html 和frame2.html之间并无直接关连 (connection),因此您不可以"直接"由frame2.html呼 叫位於 frame1.html中的函式。您必须透过parent- frame来呼叫它,所以正确指标(index)应为 parent.fr1。例如若您想由frame2.html呼叫 hi(),您必须写成 parent.fr1.hi()。这也就是为什麽 frame2.html中的 onClick要写成那种样子的原因了。 对了!附带提一点小东西。您或许已发现本章中都用&lt;script language="JavaScript"&gt;代替前两章用 的&lt;script language="LiveScript"&gt;。其实此二者间并没什麽差别。但起初JavaScript被植入Netscape 浏览器时,您只能用LiveScript语法。(这是一种由Netscape发展的旧语法,和JavaScript极为类似 )。我想既然我们讨论的是JavaScript函式,就应使用JavaScript语法。 (这只是我的一己之见,在 'JavaScript- society'中有许多关於LiveScript的讨论,目前也是众说纷纭....) <P>  在此我要花一点时间讨论一个很多人关心的问题。当您观赏一个拥有数个frame的网页时,若您 想link至internet其它网页,这些frame并不会消失而且会带来视觉上的干扰。这些讨厌的frame应 该如何消除呢?您只要在您的&lt;a href...&gt; tag中加入TARGET="_top" 就可解决这个困扰。方法如下: <P>  &lt;a href="goaway.html" TARGET="_top"&gt;如果您不想观赏我的网页了&lt;/a&gt; <P>  当然,您必须在您想要获得此效果的link中都加入TARGET="_top" 。若想要整个网页中的link 都有此效果,您可在此网页的head中加入&lt;base target="_top"&gt;较方便。如此一来每个link被按下 後都可将frame消除。 </P></TD></TR></TABLE></DIV>
回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JavaScript简介 <>第四章 * X5 i  X8 v# Q/ m! y' b
6 k2 {, l0 _' N- h4 x/ h9 h7 o
</P><DIV align=center><TABLE cellSpacing=0 cellPadding=0 width=500 border=0><TR><TD><>  这章我将告诉您如何在状态列 (statusbar) (也就是您浏览器最下方显示 URLs 的那一行) 显示文 字,并且将教您 '跑马灯' (以下简称 scroller ) 的工作原理。虽然以 JavaScript 完成的 scroller 目前 仍有些问题 (稍後会提到问题在哪儿?),但我还是告诉您它是如何写成的。首先,如何将文字填入 statusbar 呢?下述语法将告诉您如何做到这项功能: (按下按钮後请注视 statusbar 的变化) <FORM><><INPUT> <INPUT> </FORM><>  <>很新奇吧! 请看看原始码 : <>  &lt;html&gt; <>  &lt;head&gt; <>  &lt;script language="JavaScript"&gt; <>  &lt;!-- Hide <>  function statbar(txt) <>  { window.status = txt;}// --&gt; <>  &lt;/script&gt; <>  &lt;/head&gt; <>  &lt;body&gt; <>  &lt;form&gt; <>  &lt;input type="button" name="look" value="写入文字" onclick="statbar('嗨 ! 这就是状态列 (statusbar) !');"&gt; <>  &lt;input type="button" name="erase" value="清除文字" onclick="statbar('');"&gt; <>  &lt;/form&gt; <>  &lt;/body&gt; <>  &lt;/html&gt; <>  我制作了两个都会呼叫 statbar(txt) 函式 (function) 的按钮。当此函式被呼叫後,字串经由括弧中 的变数 txt 传给 statbar(txt)。 (不一定要用 txt,用别的变数名也可以)。当电脑执行到 &lt;form&gt; tag 时, 一旦按下按钮就会呼叫 statbar(txt)。但是电脑并没有马上将 txt 的内容写在 statusbar,只是 将欲显示的字串存入 txt。换句话说,藉由呼叫函式,只是让变数 txt 得到一个值。因此当您按 下 '写入文字' 这个按钮後,会呼叫 statbar(txt) 而且 '嗨 ! 这就是状态列 (statusbar) !' 这个字串会 存入 txt 中。咻 ! 讲了这麽多只是想告诉您这种写法可预留一些弹性。什麽弹性呢?就是您可重 复使用 txt 这个变数。您看看第二个按钮,它也是呼叫相同的函式。若您不利用一个变数来传递 字串的话,就必须写两个不同的函式了。那麽 statbar(txt) 到底做了些什麽?其实没什麽,只是将 txt 的内容写入变数 window.status中。这 是由 window.status = txt; 做的。另外若想消除文字,只需送一个空字串 ('') 给 statusbar。请注 意,因为在 onClick 中我们已经使用双引号 " ,所以这里必须用单引号 ' 。这是为了让浏览器辨认哪两个引号是一对的,因此您必需双引号和单引号交替使用。由此份简介文件第二章您已学过 onMouseOver 的特性了 : <>  &lt;a href="tpage.html" onMouseOver="window.status='Just another stupid link...'; return true"&gt; <>  您可能会对一件事感到厌烦。那就是当 mouse 的指标已从 link 移开了,但是 statusbar 中的文字 还留在那 !没关系,我教您一个解决的办法。利用上面教您如何消除 statusbar 中文字的方法, 我们来写一个小函式。但是如何侦测出 mouse 的指标已从 link 移开并进而呼叫消除文字的函式 呢?侦测 mouse指标是否已从 link 移出的功能目前还无法达到,但可用 "计时器" 来暂时解决此 问题。 试试将 mouse 移到此 link 上看看 statusbar 的变化,但请不要按它。 怎麽样?很棒吧!看看下面的原始码您就知到这东西很简单。 <>  &lt;html&gt; <>  &lt;head&gt; <>  &lt;script language="JavaScript"&gt; <>  &lt;!-- Hidefunction moveover(txt) <>  { window.status = txt; setTimeout("erase()",1000);} <>  function erase() <>  { window.status="";}// --&gt; <P>  &lt;/script&gt; <P>  &lt;/head&gt; <P>  &lt;body&gt; <P>  &lt;a href="dontclck.html" onMouseOver="moveover('瞬间即逝 !');return true;"&gt; <P>  link <P>  &lt;/a&gt; <P>  &lt;/body&gt; <P>  &lt;/html&gt; <P>  这 script 的许多部份相信您已了解。 moveover(txt) 其实和先前的 statbar(txt) 差不多。erase()也和 先前所讨论的相同。在 HTML 网页中的 &lt;body&gt; tag 里我们加入一个具有 onMouseOver 功能之 link。当 mouse 指标移至 "link" 上就会呼叫 moveover(txt),并且利用 txt 变数传递字串 '瞬间即逝 !'。接下来的步骤就和 statbar(txt) 一样, window.status 收到 txt 的值後将之显示在 statusbar 上。 而 setTimeout(...)这项新函式是用来作为一个 "定时器"。setTimeout(...)能作些什麽事呢?它的主 要特性是当某段设定的时间 "跑" 完了之後,便执行某函式。在这个例子中,於 1000 毫秒後 (也 就是 1 秒後) 就会执行 erase()。换句话说,当 1 秒结束後 moveover(txt) 的功能就会因 erase()的 自动执行而停止。 <P>  虽然规定时间 "跑" 完後定时器并不会重新启动,但您可以在 erase() 中再用一次setTimeout(...) ,使其循还不断,看起来就像一个跑马灯 (scroller)。 <P>  您已学到了 setTimeout 的功能和如何在 statusbar 中显示文字,接下我将教您如何制作一个在 statusbar 显示的 "跑马灯" (scroller)。 请按下方的按钮看看我做的 scroller。由於 script 需由 server 载入到您的电脑中,因此这要花一 点时间,请耐心等一下。 <FORM><P><INPUT> </FORM><P>  <P>以下是原始码 : <P>  &lt;html&gt; <P>  &lt;head&gt; <P>  &lt;script language="JavaScript"&gt; <P>  &lt;!-- Hide var scrtxt="怎麽样 ! 很酷吧 ! 您也可以试试."+"Here goes your message the visitors to your page will "+ "look at for hours in pure fascination..."; <P>  var lentxt=scrtxt.length; <P>  var width=100; <P>  var pos=1-width; <P>  function scroll() <P>  { pos++; var scroller=""; <P>  if (pos==lentxt) <P>  { pos=1-width; } <P>  if (pos&lt;0) <P>  { for (var i=1; i&lt;=Math.abs(pos); i++) <P>  { scroller="scroller+"" ";}     <P>  scroller="scroller+scrtxt.substring(0,width-i+1);" } <P>  else { scroller="scroller+scrtxt.substring(pos,width+pos);" } <P>  window.status="scroller;" <P>  setTimeout("scroll()",150); } //--&gt; <P>  &lt;/script&gt; <P>  &lt;/head&gt; <P>  &lt;body onLoad="scroll();return true;"&gt; <P>  这里可显示您的网页 ! &lt;/body&gt; &lt;/html&gt; 上面 script 用的语法相信大部份您已经懂了。 setTimeout(...) "告诉" 计时器当时间到了就呼叫 scroll()。 如此一来 scroller便会向前移动一步。在 script 的开头有许多计算式,那是用来决定文 字开始显示的位置,了不了解并不重要。一旦决定了文字的启始位置,就必需加些空格 (space) 以使文字能显示在正确位置。在此章一开始我曾提到,此种 scroller 并不是很受欢迎。即使是,也不会持续很久。为什麽呢? 下面我列出几个主要原因: <P>  当第一次看到 scroller 或许您会觉得很新奇,但久而久之便会觉得索然无味。当然,这是所有 "酷玩意儿" (cool trick) 皆有的现象。 <P>  其实这还不是主要原因,更严重的问题还在後头呢 ! 当您移动 mouse 时,您可以发现 scroller 的 速度改变了 (至少在我的机器上是如此)。尤其当您更改 setTimeout 的值为使 scroller 跑快一点时 ,这种情况更严重。不过这问题或许还有解决方法。更糟的是若让 scroller 跑久一点,会出现 Out of memory error的问题 ! 天呀 ! 这是 Netscape Navigator 2.0 的一个 "臭虫" (bug)。我们期待 新的版本能更正此 bug (译按 : Netscape Navigator Atlas Preview Release 已更正此 bug)。 在网路上有许多这方面的应用,您可以试著找找。我曾经看过有人将 scroller 放在 Homepage 中, 这应该不会太难。(译按 : 有兴趣的人可参考目录中本人所制做的 scroller) </P></TD></TR></TABLE></DIV>
回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JavaScript简介 <>第五章 ; T( Q0 g  e- X' R5 w* i

  w! w: e9 K8 J# z</P><DIV align=center><TABLE cellSpacing=0 cellPadding=0 width=500 border=0><TR><TD>  阵列(arrays)的运用是程式设计中一项种要的技术。每一种程式语言均以某种特定方式来表示阵 列。或许您已了解阵列在程式设计中的好处,但翻遍Netscape所提供的文件,并没有提及如何使 用阵列。这是因为JavaScript并不支援阵列。但是现在我将教您如何在JavaScript中使用阵列。首先,阵列是干啥用的?您可以把它看成一长串的变数(variables)。假设您现在需要宣告10个变数 ,您可以一个个将10个变数宣告为 a, b, c ...,但当您需要100个或更多的变数时,这种方法将会 变得很麻烦。若您使用一个拥有10个元素(elements)的阵列(暂且命名为 'MyArray')来表示这10个 变数,则可以用 MyArray[1], MyArray[2], MyArray[3]...分别代表第一,二,三....个变数(很多程 式语言是从0开始当作第一个元素,但在JavaScript语法中是从1开始)。因此若您想将第一个元素 (或称变数)的值指定为17,您只要写成 MyArray[1]=17即可。由此可看出阵列的功用和一般变 数是相同的。不光如此,若您想将所有元素的值均指定为17,您只要写一个简单的回圈(loop)即 可: <>  for (var i=1;i&lt;11;i++) MyArray="17&lt;/i"&gt; <>  for- 这个指令是告诉电脑其後的指令总共要执行几次。for- 回圈是从1开使,也就是电脑会先执 行MyArray[1]=17。然後 i 会增加1并接著执行MyArray[2]=17。 i 每次递增1直到 i=10为止。接下来教您如何做阵列的初始化(initialization)。这个问题曾在 JavaScript Mailing list中讨论过。 (如果您想订阅 mailing list, 您只要在e-mail中填入 subscribe javascript-digest 并寄到 majordomo @obscure.org 即可。接著您每天就会收到一到二个约20-30kB的大档案,这些档案包括所有来自 JavaScript- list的信件)。 <>  function initArray() { this.length = initArray.arguments.length for (var i = 0; i <>  您不需要了解这个函式(function)的意义,您只要知道怎麽用就好。如果您要宣告一个拥有三个元 素的阵列,且其值分别指定为 17,18,19,您只要写成 : var MyArray= new initArray(17,18,19)。您 也可以用字串(strings)当作元素的值 : var heyho= new initArray("This","is","酷")。因此您不必管元 素值的型式(type),即使混著用也行 : var Mixedup= new initArray(17,"yo",103)。 下面我将对一个阵列 'Mixedup' 作初始化,并显示阵列的内容 : Element No. 1: 17 <>  Element No. 2: yo <>  Element No. 3: 103 <>  其原始码如下: <><RE>
  1. &lt;SCRIPT language=JavaScript&gt;
    9 i5 u! c2 }5 c: }2 ]
  2. <!-- Hide  var Mixedup= new initArray(17,"yo",103);  document.write("Element No. 1: "+Mixedup[1]+"
    / k2 V8 Z1 x$ j. Y: j: X\" U
  3. ");  document.write("Element No. 2: "+Mixedup[2]+"
    ' s1 m8 i, d/ n
  4. ");  document.write("Element No. 3: "+Mixedup[3]+"
    ' S' i# V+ V* q& \, N
  5. ");// -->  5 s1 V+ n9 \% X3 ~$ C6 I5 A2 t: G
  6. &lt;script&gt;
复制代码
Element No. 1: 17
' c$ j) m9 Y5 Z) p' A) OElement No. 2: yo, g! M! _: z. n( L
Element No. 3: 103
/ Z  p4 t0 @, P# x+ W1 Q" L  r</PRE><>  Element No. 1: 17Element No. 2: yoElement No. 3: 103-- <>  当我昨天写一个小游戏时,我遇到一个您也可能会碰到的问题。当您想清除视窗或frame中的内 容时,Netscape文件中提到了一个函式可用-- 'document.clear()'。但当您将此函式写入网页中, 它并不会如预期的清除视窗或frame中的内容。而且 document.clear()在各种平台(platform)上似乎 都无效。Gordon McComb告诉我一个清除视窗或frame中内容的好方法,您可以试试 : document.close(); document.open(); document.write(" <>  "); 您不一定要写最後一行 document.write("");,只有当您想在视窗中写入某些东西时才需要加 入此行。上述方法对frame亦有效。 <>  接下来我们谈一个可以让您在不同文件之间穿梭的语法-- back() 和 forward() 两个函式。通常 我们在网页中加的 back- link和 Netscape- Navigator中的 "Back键" 功能上并不相同。Netscape- Navigator中的 "Back键" 是回到您history list中的上一页。您现在也可利用JavaScript做到相同的 功能。只要按下此 link ,您可以再度回到此页。JavaScript语法的原始码如下 : <FORM><RE>      <I></I><INPUT>     <INPUT>     <INPUT></PRE></FORM><>  <>  您也可以用 history.go(-1) 和 history.go(1) 代替. </P></TD></TR></TABLE></DIV>
回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

JavaScript简介 <>第六章3 V8 q% T% }8 M; Q# f. B# }
</P><DIV align=center><TABLE cellSpacing=0 cellPadding=0 width=500 border=0><TR><TD><>  许 多 网 友 问 我 一 个 有 趣 的 问 题 : 如 何 用 mouse 按 一 下 便 可 同 时 载 入 两 页 文 件。 基 本 上 有 三 种 方 法 可 以 达 到 这 种 功 能。 第 一 种 方 法 是 制 作 一 个 按 钮, 让 使 用 者 按 下 後 去 启 动 一 个 能 同 时 将 两 份 文 件 载 入 不 同frames或 新 视 窗 的 函 式 (function)。 若 您 曾 经 看 过 此 份 简 介 文 件 的 其 它 章 节 的 话, 我 相 信 您 可 以 很 轻 易 写 出 这 种 语 法: <FORM><><INPUT> </FORM><>  <>我 们 制 作 了 三 个 frame , 第 一 个 frame 中 包 含 了 一 个 按 钮。 请 注 意, 第 一 个 HTML 档 案 只 是 用 来 打 开 frame 和 给 予 每 个 frame 一 个 名 字。 若 您 还 不 清 楚 JavaScript 和 frame 的 关 系, 可 以 先 阅 读 第 三 章。 不 过 在 此 还 是 照 例 让 您 瞧 瞧 原 始 码 (不 知 您 是 否 在 很 多 电 脑 书 籍 中 遇 到 一 个 相 同 的 困 扰, 那 就 是 作 者 常 把 一 些 自 认 很 简 单 的 东 西 忽 略 不 提, 结 果 那 些 东 西 正 是 读 者 搞 不 懂 的 地 方 ! 所 以, 若 您 对 我 提 的 东 西 已 很 了 解, 请 发 挥 一 下 您 的 耐 性 :-)frames2.html <>  &lt;HTML&gt; <>  &lt;HEAD&gt; <>  &lt;title&gt;Frames&lt;/title&gt; <>  &lt;/HEAD&gt; <>   &lt;FRAMESET COLS="295,*"&gt; <>   &lt;FRAMESET ROWS="100%,*"&gt; <>   &lt;FRAME SRC="loadtwo.html" NAME="fr1"&gt; <>   &lt;/FRAMESET&gt; <>   &lt;FRAMESET ROWS="75%,25%"&gt; <>   &lt;FRAME SRC="cell.html" NAME="fr2"&gt; <>   &lt;FRAME SRC="cell.html" NAME="fr3"&gt; <>   &lt;/FRAMESET&gt; <>  &lt;/FRAMESET&gt; <>  &lt;/HTML&gt;第 一 个 frame 会 载 入 loadtwo.html 并 产 生 一 个 按 钮 :loadtwo.html <>  &lt;HTML&gt; <>  &lt;HEAD&gt; <>  &lt;script language="JavaScript"&gt; <>  &lt;!-- Hiding <>   function loadtwo(page2, page3) { <>   parent.fr2.location.href=page2; <>   parent.fr3.location.href=page3; <>  } <>  // --&gt; <>  &lt;/script&gt; <>  &lt;/HEAD&gt; <P>  &lt;BODY&gt; <P>  &lt;FORM NAME="buttons"&gt; <P>   &lt;INPUT TYPE="button" VALUE="同 时 载 入 两 份 文 件" onClick="loadtwo('frtest1.html', <P>   'frtest2.html')"&gt; <P>  &lt;/FORM&gt; <P>  &lt;/BODY&gt; <P>  &lt;/HTML&gt; <P>  按 下 按 钮 後, 电 脑 会 传 递 两 个 字 串 给 loadtwo() 并 将 之 启 动。 由 loadtwo() 中 可 以 看 出, 第 一 个 字 串 是 用 来 定 义 第 二 个 frame fr2所 载 入 文 件 的 位 址 和 档 案 名。 若 您 想 定 义 另 外 的 按 钮 来 载 入 不 同 的 文 件, 您 可 以 重 复 使 用 此 函 式。 只 要 将 文 件 的 URLs (addresses) 传 给 loadtwo()即 可。 <P>  接 下 来 谈 谈 用 hyperlinks 同 时 载 入 两 页 文 件 的 第 二 种 方 法。 在 Internet 上 您 可 以 发 现 许 多 网 页 使 用 &lt;a href="yourlink.html" onCLick="yourfunction()"&gt;来 达 到 上 述 提 及 的 功 能。 但 此 语 法 并 不 能 在 所 有 平 台 上 均 正 常 执 行, 因 此 最 好 不 要 用 此 语 法。 现 在 我 告 诉 您 另 一 种 写 法 : 我 们 可 改 用 下 述 JavaScript 语 法: &lt;a href="javascript:myfunction()"&gt;My Link&lt;/a&gt;此 种 方 式 非 常 简 单 而 且 在 所 有 浏 览 器 中 均 能 正 常 执 行。 您 只 要 写 上 javascript: 并 加 上 您 想 联 结 的 函 式 名 即 可。 若 此 函 式 名 称 设 为 'loadtwo()' , 那 您 就 可 藉 由 按 下 此 hyperlink 来 达 到 同 时 载 入 两 份 文 件 的 目 的 了。 <P>  再 接 着 谈 谈 用 mouse 按 一 下 便 可 同 时 载 入 两 页 文 件 的 第 三 种 方 法, 此 方 法 可 以 以 hyperlinks 或 按 钮 来 执 行。 您 可 先 在 第 二 个frame 中 载 入 一 个 HTML 文 件 : <P>  &lt;a href="getfr2.html" target="fr2"&gt;请 按 这 里 !&lt;/a&gt; <P>  然 後 在 此 文 件 中 (getfr2.html) 加 入 onLoad 这 项 指 令, 用 来 触 发 第 三 个 frame 载 入 另 一 份 文 件。 如 此 一 来 便 可 同 时 载 入 两 份 文 件。getfr2.html 档 的 原 始 码 如 下 :&lt;HTML&gt; <P>  &lt;BODY onLoad="parent.fr3.location.href='getfr3.html'; return true;"&gt; <P>  文 件 内 容.....。 <P>  &lt;/body&gt; <P>  &lt;/html&gt;当 然, 您 必 须 在 所 有 会 被 载 入 到 第 二 个 frame 的 文 件 中 加 入 onLoad 这 项 指 令。 <P>  另 一 个 常 遇 见 的 问 题 是 如 何 开 一 个 新 视 窗 并 载 入 文 件?我 们 想 达 到 的 效 果 是 当 使 用 者 按 一 下 mouse 便 会 '弹' 出 一 个 新 视 窗。 很 简 单, 只 要 在 &lt;a href...&gt; 中 利 用 target 这 项 特 性 就 可 达 到 此 效 果。 例 如 : <P>  &lt;a href="goanywhere.html" target="Resource Window"&gt;Go!&lt;/a&gt; <P>  现 在 我 将 谈 谈 在 JavaScript 中 几 种 常 用 的 运 算 子 (operator)。 运 算 子 可 以 使 您 的 JavaScript 语 法 更 精 简。 假 设 您 想 测 试 变 数 x 是 否 大 於 3 且 小 於 10, 您 可 写 成 :if (x&gt;3) <P>   if (x&lt;10) doanything(); 当 满 足 x&gt;3 且 x&lt;10 时, 就 会 执 行 doanything()。 还 有 一 种 更 精 简 的 写 法 : if (x&gt;3 &amp;&amp; x&lt;10) doanything();' &amp;&amp;' 称 为 AND- 运 算 子。 还 有 另 一 种 被 称 为 OR- 运 算 子 的 东 东 可 让 您 用 来 检 视 是 否 变 数 x 等 於 5 或 变 数 y 等 於 17 :if (x==5 || y==17) doanything();当 满 足 x==3 或 y==17 时, 就 会 执 行 doanything()。 当 然, 当 两 者 皆 成 立 时 也 会 执 行 doanything()。 <P>  在 JavaScript 中 是 利 用 == 来 做 比 较 的 工 作 (其 它 尚 有 &lt;,&gt;,&lt;= 和 &gt;=), 这 些 都 和 C/C++ 的 语 法 相 同。 另 外 单 一 '=' 是 用 来 将 数 值 存 入 变 数 用 的。 (在 Pascal 语 法 中 将 数 值 指 定 给 变 数 是 用 :=, 而 做 比 较 是 用 单 一 的 '=', 这 和 JavaScript 语 法 有 点 不 同)若 您 想 利 用 '不 等 於' 这 项 特 性, 您 可 以 用 !=。 例 如 : x != 17.尚 有 许 多 可 以 精 简 您 的 JavaScript 语 法 的 运 算 子, 去 翻 翻 Netscape 的 文 件 吧 ! </P></TD></TR></TABLE></DIV>
回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

< align=center>JSP语法(10)——&lt;jsp:include&gt;</P>< align=right>作者:飞刀/ aspcn.com</P><B>&lt;jsp:include&gt; </B>
! p- \( t" o3 C3 o3 M7 B, _$ k<><>包含一个静态或动态文件. </P><p><p><p><p><><H4>JSP 语法</H4><p><><BLOCKQUOTE><p><p><>&lt;jsp:include page="{<EM>relativeURL</EM> | &lt;%=<EM> </EM><EM>expression</EM>%&gt;}"   flush="true" /&gt; </P><><EM>or </EM></P><><EM></EM>&lt;jsp:include page="{<EM>relativeURL</EM> | &lt;%=<EM> expression </EM>%&gt;}"   flush="true" &gt; </P><>        &lt;jsp:param name="<EM>parameterName</EM>" </P><>value="{<EM>parameterValue</EM> | &lt;%= <EM>expression</EM> %&gt;}" /&gt;+ </P><>&lt;/jsp:include&gt; </P></BLOCKQUOTE><p><><H4>Examples</H4><p><><BLOCKQUOTE><p><p><>&lt;jsp:include page="scripts/login.jsp" /&gt; </P><>&lt;jsp:include page="copyright.html" /&gt; </P><>&lt;jsp:include page="/index.html" /&gt; </P><><p><>&lt;jsp:include page="scripts/login.jsp"&gt; </P><>        &lt;jsp:param name="username" value="jsmith" /&gt; </P><>&lt;/jsp:include&gt; </P><p><p></BLOCKQUOTE><p><p><p><><H4>描述</H4><p><><>&lt;jsp:include&gt;元素允许你包含动态文件和静态,这两种包含文件的结果是不同的。如果文件仅是静态文件,那么这种包含仅仅是把包含文件的内容加到jsp文件中去,而如果这个文件动态的,那么这个被包含文件也会被Jsp编译器执行(这一切与asp相似) </P><p><>你不能从文件名上判断一个文件是动态的还是静态的,比如<EM>aspcn.asp</EM> </P><>就有可能只是包含一些信息而已,而不需要执行。&lt;jsp:include&gt;能够同时处理这两种文件,因此你就不需要包含时还要判断此文件是动态的还是静态的. </P><p><>如果这个包含文件是动态的,那么你还可以用&lt;jsp:param&gt;还传递参数名和参数值。 </P><p><p><p><p><><H4>属性</H4><p><><UL><p><><LI>page="{<EM>relativeURL</EM> | &lt;%= <EM>expression</EM> %&gt;}" <P>参数为一相对路径,或者是代表相对路径的表达式. </P><p><p><p><p><LI>flush="true" <P>这里你必须使用flush="true",你不能使用false值.缺省值为false </P><p><p><p><p><LI>&lt;jsp:param name="<EM>parameterName</EM>" value="{<EM>parameterValue</EM> | &lt;%= <EM>expression</EM> %&gt; }" /&gt;+ <P>&lt;jsp:param&gt;子句能让你传递一个或多个参数给动态文件 </P><p><P>你能在一个页面中使用多个&lt;jsp:param&gt;来传递多个参数。</P></LI></UL>
回复

使用道具 举报

韩冰        

823

主题

3

听众

4048

积分

我的地盘我做主

该用户从未签到

发帖功臣 元老勋章

< align=center>JSP语法(11)——&lt;jsp:plugin&gt;</P>< align=right>作者:飞刀/ aspcn.com</P><B>&lt;jsp:plugin&gt; </B><><>执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它. </P><H4>JSP 语法</H4><BLOCKQUOTE><>&lt;jsp:plugin </P><>' F) q7 u5 ~' g1 y$ D
  type="bean | applet" </P><>
' r% p9 Z+ J5 e0 s  code="<EM>classFileName</EM>" </P><>
2 g# a4 R6 f" g: K8 P) ~0 }# z  codebase="<EM>classFileDirectoryName</EM>" </P><>
: `  |; L, W" ]8 b7 K' g' o  [ name="<EM>instanceName</EM>" ] </P><>
- h1 i8 t5 q" N! C& m; o: K- Z  [ archive="<EM>URIToArchive</EM>, ..." ] </P><>
; Y* g! \. _+ z7 S7 F8 d  [ align="<b>bottom</b> | top | middle | left | right" ] </P><>
* w( Z" U* D- q3 S) C# c: s  [ height="<EM>displayPixels</EM>" ] </P><>
! _0 r6 Q% r# T/ e1 }9 N  [ width="<EM>displayPixels</EM>" ] </P><>; J2 N( O# L4 {) m3 [4 D/ s
  [ hspace="<EM>leftRightPixels</EM>" ] </P><>' h6 P5 `6 z  }2 ~5 o3 A
  [ vspace="<EM>topBottomPixels</EM>" ] </P><>
/ y3 K! w& H1 s$ y: J* V  [ jreversion="<EM>JREVersionNumber</EM> | <b>1.1</b>" ] </P><>
5 Q/ B" C3 N: D/ Q6 R  [ nspluginurl="<EM>URLToPlugin</EM>" ] </P><>
& t$ d) j: p" x+ J% _  [ iepluginurl="<EM>URLToPlugin</EM>" ] &gt; </P><><>  [ &lt;jsp:params&gt; </P><>
. W4 k6 k' b# t- \' U3 B6 f( l  [ &lt;jsp:param name="<EM>parameterName</EM>" </P><>value="{<EM>parameterValue</EM> | &lt;%= <EM>expression</EM> %&gt;}" /&gt; ]+ </P><>$ U$ ]: l: h- z1 Q  e  f: ?0 W
  &lt;/jsp:params&gt; ] </P><>
: b3 [& d- m4 y/ [! S3 F* o  [ &lt;jsp:fallback&gt; <EM>text message for user</EM> &lt;/jsp:fallback&gt; ] </P><>
0 Z4 F+ }0 t. X* c&lt;/jsp:plugin&gt; </P></BLOCKQUOTE><><H4>例子</H4><><BLOCKQUOTE><>&lt;jsp:plugin type=applet code="Molecule.class" codebase="/html"&gt; </P><>&lt;jsp:params&gt; </P><>  &lt;jsp:param name="molecule" value="molecules/benzene.mol" /&gt; </P><P>&lt;/jsp:params&gt; </P><P>&lt;jsp:fallback&gt; </P><P>  &lt;p&gt;Unable to load applet&lt;/p&gt; </P><P>&lt;/jsp:fallback&gt; </P><P>&lt;/jsp:plugin&gt; </P></BLOCKQUOTE><P><H4>描述</H4><P><P>&lt;jsp:plugin&gt;元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件。 </P><P>当Jsp文件被编译,送往浏览器时,&lt;jsp:plugin&gt;元素将会根据浏览器的版本替换成&lt;object&gt;或者&lt;embed&gt;元素。注意,&lt;object&gt;用于HTML 4.0 ,&lt;embed&gt;用于HTML 3.2. </P><P>一般来说,&lt;jsp:plugin&gt;元素会指定对象是Applet还是Bean,同样也会指定class的名字,还有位置,另外还会指定将从哪里下载这个Java插件。具体如下: </P><P><H4>属性</H4><P><UL><P><LI>type="bean | applet" <P>.将被执行的插件对象的类型,你必须得指定这个是Bean还是applet,因为这个属性没有缺省值. </P><LI>code="<EM>classFileName</EM>" <P>将会被Java插件执行的Java Class的名字,必须以.class结尾。这个文件必须存在于codebase属性指定的目录中. </P><LI>codebase="<EM>classFileDirectoryName</EM>" <P>将会被执行的Java Class文件的目录(或者是路径),如果你没有提供此属性,那么使用&lt;jsp:plugin&gt;的jsp文件的目录将会被使用. </P><LI>name="<EM>instanceName</EM>" <P>这个Bean或applet实例的名字,它将会在Jsp其它的地方调用. </P><LI>archive="<EM>URIToArchive</EM>, ..." <P>一些由逗号分开的路径名,这些路径名用于预装一些将要使用的class,这会提高applet的性能. </P><LI>align="<b>bottom</b> | top | middle | left | right" <P>图形,对象,Applet的位置,有以下值: </P><P><UL><P><LI class=article><CODE>bottom</CODE> <LI class=article><CODE>top</CODE>   <LI class=article><CODE>middle</CODE>   <LI class=article><CODE>left</CODE>   <LI class=article><CODE>right</CODE>   </LI></UL><LI>height="<EM>displayPixels</EM>" width="<EM>displayPixels</EM>" <P>Applet或Bean将要显示的长宽的值,此值为数字,单位为象素. </P><LI>hspace="<EM>leftRightPixels</EM>" vspace="<EM>topBottomPixels</EM>" <P>Applet或Bean显示时在屏幕左右,上下所需留下的空间,单位为象素. </P><LI>jreversion="<EM>JREVersionNumber</EM> | <b>1.1</b>" <P><P>Applet或Bean运行所需的Java Runtime Environment (JRE) 的版本. </P><P>缺省值是 1.1. </P><LI>nspluginurl="<EM>URLToPlugin</EM>" <P><P>Netscape Navigator用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp </P><LI>iepluginurl="<EM>URLToPlugin</EM>" <P>IE用户能够使用的JRE的下载地址,此值为一个标准的URL,如http://www.aspcn.com/jsp </P>
8 _* u& D* a4 [0 S<LI>&lt;jsp:params&gt;   [ &lt;jsp:param name="<EM>parameterName</EM>" <P>value="{<EM>parameterValue</EM> | &lt;%= <EM>expression</EM> %&gt;}" /&gt; ]+   &lt;/jsp:params&gt; <P>你需要向applet或Bean传送的参数或参数值。 </P><LI>&lt;jsp:fallback&gt; <EM>text message for user</EM> &lt;/jsp:fallback&gt; <P>一段文字用于Java </P><P>插件不能启动时显示给用户的,如果插件能够启动而applet或Bean不能,那么浏览器会有一个出错信息弹出</P></LI></UL>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册地址

qq
收缩
  • 电话咨询

  • 04714969085
fastpost

关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

手机版|Archiver| |繁體中文 手机客户端  

蒙公网安备 15010502000194号

Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

GMT+8, 2026-1-9 14:44 , Processed in 2.939336 second(s), 86 queries .

回顶部