【问题标题】:Java applet functions aren't being accessed by JavascriptJavascript 未访问 Java 小程序函数
【发布时间】:2013-09-18 03:09:11
【问题描述】:

我正在尝试创建一个非常简单的 Java Applet 来尝试在 Web 浏览器中使用 Java 功能。问题是,我无法从我的小程序中获得任何功能。我已经尝试了该站点中的数十个教程和答案,但没有产生任何不同的结果,浏览器总是说 AppName.FunctionName 不是函数。

这是我的 html...

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4  /strict.dtd">
<html>
<head>
 <meta content="text/html; charset=ISO-8859-1"
 http-equiv="content-type">
<title>Test Applet</title>
</head>
<body onload="test()">
<applet code="TestApplet.class" name="AppTest"
height="350" width="100"></applet>
<script language="Javascript">
function test(){
alert("Attempt 1");
var elem= document.getElementById('AppTest');
alert(elem);
elem.test();
alert("Attempt 2");
document.AppTest.test();
}
</script><br>
</body>
</html>

这是我的 Java 代码...

import javax.swing.JApplet;

public class TestApplet extends JApplet {

    public String sayHi(){
        return "hello";
    }
    public void test(){
        System.out.println("You did it bro");
    }
}

任何想法为什么这似乎什么都不做?注意:我正在使用 FireFox 对其进行测试

编辑:

所以试图更接近一个可行的解决方案,我修改了我的 html 如下

<html>
<head>
  <title>Test Applet</title>
</head>
<body>
<applet code="AppPack.TestApplet.class"
 codebase="TestApplet.jar" name="AppTest"
 scriptable="true" height="350" width="100"></applet>
<script language="Javascript">function test(){
document.AppTest.test();
}
</script><br>
<input name="tryit" value="TryIt" onclick="test()"
 type="button">
</body>
</html>

我尝试使用代码库声明,看看包含它如何将小程序绘制到画布上,但是该框只包含一个错误,指出类未找到异常,没有它,我得到一个只有按钮的空白页面.所有文件都在同一个目录中,如果我在 Eclipse 中测试小程序,它会生成 html 以在查看器中运行小程序,但是如果仅使用浏览器打开这些 html 文件也不会加载。请问,谁能解释一下我做错了什么?

【问题讨论】:

  • 测试函数调用太快。 - 小程序不应有构造函数。将该代码放入init() 并在部署时声明它scriptable='true'。为什么要编写小程序?如果是由于规范。老师请发给Why CS teachers should stop teaching Java applets
  • 你能给我举个例子来说明你的意思吗?该小程序用于与工作相关的项目,我们希望能够访问服务器端的某些 Java 实用程序以供内部使用。
  • “你能给我举个例子说明你的意思吗?” 你能回答我的问题——即“为什么要编写小程序?”
  • 正如我提到的,我们正在开发一个基于浏览器的应用程序供内部使用,我们希望一些 Java 实用程序来更改保存在服务器端磁盘上的文件,小程序是我们访问 Java 的一种方式从我们的浏览器中,如果有更好的方法来访问 html 或 javascript 中的 Java 类,我将有兴趣了解更多信息。但是,出于这个问题的目的,我不清楚您所说的“将代码放入 init() 并声明它 scriptable='true'”是什么意思,您能澄清一下吗?
  • “我不清楚你所说的“将代码放在 init() 中并声明它是 scriptable='true'”的意思,你能澄清一下吗?”有趣的是,这些都不是主要问题(AFAIU),这在第一句话中已经涵盖。至于“不清楚”——你不清楚什么?具体一点,因为我不打算用cmets写小程序教程..

标签: java javascript html applet


【解决方案1】:

测试函数调用太快。

在调用页面onload 函数时不一定会加载和启动小程序。这实际上只意味着浏览器已经读取了与页面相关的所有 HTML,不一定是图像、(外部定义的)样式或脚本,或者可能作为页面加载的 result 创建的东西(例如小程序)。

将对test() 方法的调用放入您单击的按钮中,在页面加载后等待“片刻”,然后重试。


同时确保在部署时声明它scriptable='true'。像这样:

<applet 
    code="TestApplet" 
    name="AppTest"
    scriptable="true"
    height="350" 
    width="100">
</applet>

大多数浏览器都允许在没有它的情况下调用小程序,但最好为其他浏览器添加它。

【讨论】:

  • 这个解决方案是正确的,只是因为我不知道的服务器问题,它起初对我不起作用。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-20
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-24
  • 2012-05-16
相关资源
最近更新 更多