一、 | Java Applet与JavaScript的交互 |
| 1.1、 | 从Java Applet访问Java Script方法 |
| | Sun公司在JDK中提供了一套从Java Applet访问Java Script的API,由此可以实现Java Applet访问HTML页面中的DOM对象的机制。该API以一个Jar文件的形式提供:%JAVA_HOME%/jre/lib/jaws.jar,其中%JAVA_HOME%是你安装JDK的目录。将该jar文件加入到环境变量classpath中,就可以用它实现从Java Applet到Java Script的调用了。下面是一段调用Java Script中的方法的代码实例: |
| |
import netscape.javascript.*; import java.applet.*; import java.awt.*; class MyApplet extends Applet { public void init() { JSObject win = JSObject.getWindow(this); JSObject doc = (JSObject) win.getMember("document"); win.call("f", null); } } | |
| | 在上面的代码中,win.call(“f”, null)调用了JavaScript中的方法f()。 |
| | |
| 1.2、 | 从JavaScript访问Java Applet |
| | 当使用Java Plugin1.4.x运行Java Applet时,只需把Java Applet中的方法视为Java Plugin这个控件的方法,直接在Java Script中进行调用即可。下面用一个简单的例子进行说明: |
| | (1) | 在载入Java Plugin的Object标签中,用参数ID指定一个名字: |
| |
<OBJECT ID="MyPlunin" WIDTH=500 HEIGHT=120 CLASSID="CLSID:8AD9C840-044E-11d1-B3E9-00805F499D93"> <PARAM NAME="code" value="MyApplet.class"> ... </OBJECT> | |
| | (2) | 在HTML页面上增加一个按钮,点击它时从Java Script调用Java Applet中的方法: |
| |
<input type="button" name="Button1" value="Start" onClick="calculate" language="JavaScript"> | |
| | (3) | 假定你的Java Applet是MyApplet.java,它有一个public方法method1(),那么就可以用如下的Java Script代码直接调用该方法: |
| |
<SCRIPT language="JavaScript"> function calculate() { document.MyPlunin.method1() } </SCRIPT> | |
| | | |
二、 | JavaScript与EIO_Applet的交互 |
| 我们知道,永中Office通过Applet方式,能非常方便地嵌入浏览器(为方便起见,我们称嵌入网页的永中Office为“EIO_Applet”)。现在的网页,大量用到动态元素,让网页更生动,也实现了网页与用户的交互。JavaScript作为最早的一种网页脚本语言,以其功能强大、使用灵活,得到了大量地应用。JavaScript能和嵌入网页的永中Office互动吗?答案是肯定的。下面我们就以一个最简单的例子来讲述如何实现 JavaScript与EIO_Applet互动。 |
| |
| 上面这附图是我们设计的一个最简单的演示样例。我们设想当用户点击网页上的“新建空白文档”按钮时,EIO_Applet能够新建一个空白文字处理文档,如下图所示: |
| |
| 这是如何实现的呢?我们先来看网页源代码。 |
|
<head> <meta http-equiv="Content-Type" content="text/html; charset=gb18030"> <title>JavaScript调用EIO_Applet样例</title> <script language="JavaScript"> <!-- //利用JavaSript函数调用Applet中的openDialog方法 function opendia() { document.postil.openDialog(); } // --> </script> </head> <body> <form method="POST" action="" > <p> <font size=4><center><b>网页Form控件与EIO_Applet互动示例</b></center></font> </p> <center> <input type="button" value="新建空白文档" name="newfile" οnclick="opendia();"> <p> <applet width="400" height="300" name="postil" code="EIOApplet.class" > 本浏览器不支持JAVA Applet </applet> </p> </form> </body> </html> | |
| 你可能马上注意到这个网页中包含JavaScript程序和Form控件,Form控件是一个按钮,其显示值是“新建空白文档”,其动作是调用JavaScript编写的“ opendia(); ”方法。“ opendia(); ”方法做了什么呢?它只做了一件事情: document.postil.openDialog(); 这里需要解释一下,document是任何一个网页都有的“文档对象”, postil是 EIOApplet.这个applet,postil是document中的一个对象,所以用 document.postil就可以调用 EIO_Applet了。 很自然的,你可能马上就会想 openDialog()是 postil这个applet中的一个方法了,也就是EIO_Applet的一个方法,不错,就是这样。看看 EIOApplet.class源代码: |
|
import java.awt.Container; import application.Application; //导入永中Office的类 /** * * @author Evermore */ public class EIOApplet extends javax.swing.JApplet { /** Creates a new instance of EIO_Applet */ public EIOApplet() { } private void createInstance() { //创建永中Office的applet实例 Application.createInstance(this); //获得applet实例 getContentPane().add("Center", Application.getInstance()); //将applet添加到Applet面板中 Container contentPane=getContentPane(); } public void start() { createInstance(); } //EIO_Applet中的方法,供网页JavaScript函数调用,与网页按钮联动 public void openDialog() { Application.gotoProduct(1);//切换到文字处理应用,此时为新建一个空白文档 } } | |
| openDialog()做了什么事情呢?它也只用了一句话: Application.gotoProduct(1); Application是永中Office的实例,是最上层的类,其中包含 gotoProduct(int i)方法,其作用是切换到第i个应用中。我们知道,永中Office是一个集成的Office,文字处理、电子表格和简报制作都集成在其中,如何进入文字处理呢?用这个方法就可以了。参数1表示进入文字处理,参数2表示进入简报制作,那电子表格呢?嘿嘿,参数0是也。注意,是“切换”或者进入第i个应用,不是“新建空白文档”,那为什么又新建了一个空白文档呢?原来永中Office在执行这个方法时,会检测系统是否有已经打开的文件,如果没有,就会自动新建一个空白的文件,然后goto到第i个应用,这就是我们上图看到的新建空白文档的实现过程了。 编译方法:在命令行用下列命令编译该java文件(确保永中Office已经安装了) javac -classpath %EIO_HOME%/EIOOffice.ese;. EIOApplet.java 其中EIO_HOME为安装永中Office时系统自动设置的永中Office的路径;如果没有设置JAVA_HOME环境变量,则在javac命令前填充JDK的具体路径。 如果想要增加更多的按钮,甚至在网页和EIO_Applet之间传递数据,只要你去发挥就都能做到。怎么样,是不是很简单呀?赶紧Try一下吧! |