我对javascript与applet互访问的尝试

xiha2001 2002-04-30 05:01:22
我正在做一个applet,非常简单的一个画图的东东,但是关键的问题
在于我要将客户端用户画的结果传回服务器,于是我做下面的尝试。

1.在页面里添加几个hidden类型的input。
2.在用户提交时,对这几个input赋值(值当然在applet里面)。

我看到过几本书上写过,在javascript或者vbscript中可以通过以下
方式访问applet的public变量或者方法:

document.applets.la1.pno;
//la1为applet name,pno为这个applet类的一个public变量(String型)。
document.applets.la1.getpno();
//getpno()为这个applet类的一个public方法。
前一种得到的是一个"undefined",
后一种如果仅仅做applet的内部操作,没有返回值的话,是正常的,如果有返回值的话,
返回的也是"undefined".于是这条路行不通。

再换一种方法,使用netscape.javascript.*,据说它能够调用javascript.
(注意:这个包不是JDK自带的,需要到windows/java/package/目录下找到一个压缩文件,
文件名每个机子都不固定)
首先使用第一种方式,
import netscape.javascript.*;
...
public void getpno(){
try{
JSObject win=JSObject.getWindow(this);
JSObject doc=(JSObject)win.getMember("document");
JSObject form=(JSObject)doc.getMember("test");
JSObject text=(JSObject)form.getMember("l1");
text.setMember("value","kaka");
}catch(Exception e){
Graphics g=getGraphics();
g.drawString("error",30,50);
g.dispose();
}
}

访问成功(test为form名,l1为input名)
我以为就这么解决了,
于是改为下面的
public void getpno(){
try{
JSObject win=JSObject.getWindow(this);
JSObject doc=(JSObject)win.getMember("document");
JSObject form=(JSObject)doc.getMember("test");
JSObject text=(JSObject)form.getMember("l1");
text.setMember("value",result);
}catch(Exception e){
Graphics g=getGraphics();
g.drawString("error",30,50);
g.dispose();
}
}
result为一String,肯定有值的。
出错。


于是再换第二种方式:
public void getpno(){
try{
JSObject win=JSObject.getWindow(this);
win.eval("setstr(\"kaka\")");
}catch(Exception e){
Graphics g=getGraphics();
g.drawString("error",30,50);
g.dispose();
}
}
其中setstr为一个javascript函数,如下
<script language="javascript">
function setstr(str)
{
document.test.l1.value=str;
}
</script>
又可以了。
但是当我win.eval那句换成
win.eval("setstr(\""+result+"\")");
又是error.


天哪,我晕了。
大虾帮我找找原因。

那个String型的result肯定是没问题的。
...全文
65 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimshen 2002-05-07
  • 打赏
  • 举报
回复
jimshen@21cn.com
YHW 2002-05-02
  • 打赏
  • 举报
回复
eval只能对javascript的语句有作用,调用自己的函数用call
参考这篇文章
http://www.csdn.net/develop/Read_Article.asp?Id=10507
xiha2001 2002-04-30
  • 打赏
  • 举报
回复
给我你的email,我明天给你发.
jimshen 2002-04-30
  • 打赏
  • 举报
回复
把你的整个源代码发给我,我做过用Applet作为用户登录表单(数据传输是加密的)的程序,跟你的有点类似
qlqllu 2002-04-30
  • 打赏
  • 举报
回复
学习
xiha2001 2002-04-30
  • 打赏
  • 举报
回复
出错信息我都写了,
以document.applets.la1.pno的方式访问或者有返回值时,
返回"undefined".

后两种方式在
text.setMember("value",result);

win.eval("setstr(\""+result+"\")");
处抛出异常.
pengji 2002-04-30
  • 打赏
  • 举报
回复
关注!?很难想象这样的问题!有出错信息吗?!

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧