与JavaScript交互
JavaScript应该是大家非常熟悉的客户端脚本语言。虽然名字中带有Java,但它和Java语言只是在语法上有类似之处,JavaScript是由浏览器解释运行,与Applet由Java虚拟机执行完全不一样。不过,这两个没有血缘关系的同班同学倒是可以精诚合作,Applet实现底层的工作,JavaScript执行更高层的调用,从而实现意想不到的效果。
JavaScript可以通过多种途径操纵Applet。首先,JavaScript能调用Applet中的public的方法,这时的Applet好像一个听话的机器人一样好用。另外一种方法就是用JavaScript直接修改HTML结构,这样可以定制Applet的各种属性,有更大的灵活性。
刚才说了,我们的目标是把这个Applet制作成一种服务,即使不懂编程的朋友通过设置网页的参数就能够使用,因为不是每个人都有能力(或者精力)修改源代码的。所以,需要把Applet的参数做成可定制的,而这个只能够由JavaScript完成。虽然我们可以给Applet写一些类似于setFrom()和setTo()的方法给JavaScript调用,但是问题在于JavaScript函数的执行时机,因为Applet无法通知JavaScript它已经完成初始化操作了。
所以,我们应该走第二条路,即用JavaScript直接修改HTML结构,动态把<applet>标签写入HTML。从而,我们最终版本的index.htm代码如下:
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>大千世界无奇不有</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script language="JavaScript">
// 得到URL中的参数
var urlquery = location.href.split("?");
if (urlquery.length > 1) {
// 解析参数并获取from和to
var urlterms = urlquery[1].split("&");
var from = decodeURIComponent(urlterms[0].substring(5));
var to = decodeURIComponent(urlterms[1].substring(3));
// 动态把<applet>标签写入HTML
document.write('<center>');
document.write('<h1>爱琴海上千年罕见的奇观</h1>');
document.write('</center>');
document.write('<hr>');
document.write('<p align=center>http://www.cfan.com.cn 2005年2月14日 记者:GaryChan</p>');
document.write('<applet code="NewsApplet.class" codebase="."
width=480 height=384>');
document.write(' <param name="from" value="' + from + '">');
document.write(' <param name="to" value="' + to + '">');
document.write('</applet>');
document.write('<p>酷似汉字的星辰若隐若现&?lt;/p>');
document.write('<img src="crowd.jpg">');
document.write('<p>世界各地人们蜂拥而来争相观赏</p>');
document.write('<p>据称,如果名字跟星辰相似,一定能够得到神灵的祝福。<p>');
}
</script>
<form>
<p>你的名字:
<input name="from" type="text" id="from" width="100">
她的名字:<input name="to" type="text" id="to" width="100">
<input type="submit" name="Submit" value="提交">
</p>
</form>
</body>
</html>
根据这个Applet与JavaScript结合编程思路,你能够做出许多的创意,记得跟大家分享哦。
我只想用这个Applet
这个Applet已经上传至http://www.cfan.com.cn/11program/200503/index.htm,欢迎大家实行拿来主义。你可以填入你的名字(比如:至尊宝)以及她的名字(比如:白晶晶),提交以后便可以看到最终结果。然后把地址栏中长长的一串URL全部复制给你的她,当她用浏览器打开的时候便可以看到你精心为她准备的情人节礼物了。
如果你无法得到正确的结果,有这么几种可能:
1.需要升级Java虚拟机。Windows内置的Microsoft Virtual Machine是基于1997年Java1.1版本的,距今已经有相当长的时间了。另一方面,2007年12月以后微软公司便没有义务在Windows中内置对Java的支持了。现在的J2SE已经推出了5.0版本,是一个成熟而且被广泛采用的技术。所以,你应该毫不犹豫地把你的系统中的VM升级到Sun公司的最新版本。注意,微软公司虽然极力推荐人们把Java程序向他们公司的C#和J#移植,但是它们都不是跨平台的。更有甚者,由于微软的不正当竞争,单方面提早从Windows系统中去掉了对Java的支持。纵然罚了许多款,也无法挽回Windows XP默认不安装Java运行时环境的局面。所以,要看到Applet的执行结果,首先请到http://java.sun.com/j2se/1.5.0/download.jsp下载并安装Java运行时环境。
2.浏览器必须支持JavaScript的运行。
3.MyIE等第三方浏览器有可能屏蔽Applet,请用IE浏览该网页。
欢迎到garychan.3322.org提出建议或者意见,让我们共同享受Java技术带来的体验。
如果你觉得这期咖啡馆还不解渴,下面是一些由Gary推荐的阅读材料:
★Sun公司官方的Java教程
http://java.sun.com/docs/books/tutorial/index.html
这个教程是由Sun维护并且不断更新的,其中Getting Started和Writing Applets两章可以让您掌握更多的Applet知识。
★洪恩在线的Java Applet实例讲解
http://www.hongen.com/pc/homepage/applet/
提供一个简单的Java Applet入门,以及非常丰富的例程。
[1] [2]
