| 一、 |
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" onclick="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一下吧! |