JavaScript与EIO_Applet互动

一、Java AppletJavaScript的交互
 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>

    
二、JavaScriptEIO_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一下吧!
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值