<applet name=demoApplet ....... MAYSCRIPT ></applet> in web pages: <script language="javascript> var return=document.demoApplet.function(parameter); </script>
for example: html: <APPLET CODE="ecat.class" codebase="" archive="ecat.class" WIDTH="1" HEIGHT="1" name="counter" Id="counter"> <param name=img value="images/jim.graham.gif"> js: top.frames['fHeader'].counter.decryptString(xmlNodes[j].text,decryptKey_applet);applet: import java.applet.*; import java.awt.*; import java.lang.*; import java.lang.Character; import java.lang.Integer; import java.util.*;public class ecat extends Applet { public String decryptString(String orgStr,String ss) { int i,j; char[] decryptKey ; StringBuffer dstStr = new StringBuffer(""); //StringBuffer orgStrb= new StringBuffer(orgStr); decryptKey=ss.toCharArray(); if (decryptKey.length==1) return orgStr; for (i = 0; i < Math.floor(orgStr.length() / decryptKey.length + 1) * decryptKey.length - orgStr.length(); i ++) orgStr=orgStr+" ";
for (i = 0; i < orgStr.length() / decryptKey.length; i ++) { for (j = 0; j < decryptKey.length; j ++) { Character ch= new Character(decryptKey[j]); dstStr.append(orgStr.substring(i * decryptKey.length).substring(Integer.valueOf(ch.toString()).intValue(),Integer.valueOf(ch.toString()).intValue()+1)); } } dstStr.append(orgStr.substring(i * decryptKey.length));
MAYSCRIPT ></applet>
in web pages:
<script language="javascript>
var return=document.demoApplet.function(parameter);
</script>
xxx.getMyFun();
</js><js>为省略,其实就是
<script language="JSScript">
document.xxx.getMyFun();
</script>
没问题呀?两个方法其实都是一样的。两点要知道:1、可以通过<applet name="appletname" ...>的方法给一个applet命名,这个名字可以被javascript使用。2、调用方法是 document.appletname.function 或者 document.applets[0].function表示第一个applet也可以的,这样可以不用命名了。如果你想在applet中使用javascript,比较麻烦一点,要用到JSObject对象,也就是要一个第三方的包了。
</APPLET>
<SCRIPT LANGUAGE="JavaScript">
var x;
var y;
var z;
x=3;
y=5;
z=document.CALC.getAdd(x,y);
document.writeln(z);
</SCRIPT>
我就是这样写的呀。public int getAdd(int a,int b)是APPLET中的方法。可是在IE中不能用interdev提示此方法或属性不可用。
<html>
<head></head>
<body>
<APPLET CODE=Test.class NAME="test" WIDTH=250 HEIGHT=300>
</APPLET>
<SCRIPT LANGUAGE="JavaScript">
var z;
z=document.test.date();
document.writeln(z);
</SCRIPT>
</body>
</html>import java.applet.Applet;
public class Test extends Applet{ public Test() {
} public byte date(){
return (byte)100;
}
}
比如上面的网友说的
public byte date(){
return (byte)100;
}
而我写的
public int getAdd(int a,int b){
return a+b;
}
却不能调用,我试过了上面网友的程序确实可以调,但那是不传参数的,难道Javascript只能调用没有参数的APPLET方法吗?
除了字串以外,什么东西都不能作为参数。如果是数值先作为字串进入applet后,转一下,处理完后再作为字串传出来,再转一下或显示。因为form1.text1.value得到的肯定是字串,你在javascript中处理也要加eval或parseInt的函数才行,对吧?所以不妨先给applet,把applet传出的String再eval一下成为数值吧。
html:
<APPLET CODE="ecat.class" codebase="" archive="ecat.class" WIDTH="1" HEIGHT="1" name="counter" Id="counter">
<param name=img value="images/jim.graham.gif">
js:
top.frames['fHeader'].counter.decryptString(xmlNodes[j].text,decryptKey_applet);applet:
import java.applet.*;
import java.awt.*;
import java.lang.*;
import java.lang.Character;
import java.lang.Integer;
import java.util.*;public class ecat extends Applet
{ public String decryptString(String orgStr,String ss)
{
int i,j;
char[] decryptKey ;
StringBuffer dstStr = new StringBuffer("");
//StringBuffer orgStrb= new StringBuffer(orgStr);
decryptKey=ss.toCharArray(); if (decryptKey.length==1) return orgStr; for (i = 0; i < Math.floor(orgStr.length() / decryptKey.length + 1) * decryptKey.length - orgStr.length(); i ++)
orgStr=orgStr+" ";
for (i = 0; i < orgStr.length() / decryptKey.length; i ++)
{
for (j = 0; j < decryptKey.length; j ++)
{
Character ch= new Character(decryptKey[j]);
dstStr.append(orgStr.substring(i * decryptKey.length).substring(Integer.valueOf(ch.toString()).intValue(),Integer.valueOf(ch.toString()).intValue()+1));
}
}
dstStr.append(orgStr.substring(i * decryptKey.length));
return (dstStr.toString());
}
};