Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript调用Java小程序方法?_Java_Javascript_Applet - Fatal编程技术网

如何使用Javascript调用Java小程序方法?

如何使用Javascript调用Java小程序方法?,java,javascript,applet,Java,Javascript,Applet,去年,我为从web应用程序到本地运行的java服务器的套接字连接创建了一个java小程序。它工作得很好 自从上次java更新(我猜是7 r21)以来,我再也无法访问javascript中的方法了。现在,我将小程序简化为一个测试小程序(没有doPriviligeAction方法),但即使这样也不再有效 当前代码如下 import java.applet.*; public class socketApplet extends Applet { public void init() {

去年,我为从web应用程序到本地运行的java服务器的套接字连接创建了一个java小程序。它工作得很好

自从上次java更新(我猜是7 r21)以来,我再也无法访问javascript中的方法了。现在,我将小程序简化为一个测试小程序(没有doPriviligeAction方法),但即使这样也不再有效

当前代码如下

import java.applet.*;

public class socketApplet extends Applet {

    public void init() {
        System.out.println("Applet initialisiert.");
    }

    public void start() {
        System.out.println("Applet gestartet.");
    }

    public void paint() {
        System.out.println("Applet aktualisiert.");
    }

    public void stop() {
        System.out.println("Applet angehalten.");
    }

    public void destroy() {
        System.out.println("Applet beendet.");
    }

    public String testApplet() {
        System.out.println("Applet getestet.");
        return "Yep, I'm the Applet.";
    }

}
在更新之前,我可以访问javascript中的testApplet()等方法,如下所示:

document.socketApplet.testApplet();
小程序是自签名的,并嵌入了一个小程序html标记。它正在启动(java控制台正在打开并打印init、start和paint方法中定义的调试消息),但我无法访问testApplet()方法。当小程序存在时,Javascript中的响应为“未定义”

在阅读了一段时间(现在几天…)关于新安全性更改的内容后,我添加了一个manifest.txt,其中包含以下内容:

Main-Class: socketApplet
Permissions: all-permissions
Codebase: *
Trusted-Library: true
使用或不使用Trusted Library属性都不会带来好运

我必须做什么才能再次启用javascript访问

编辑: 实施:

<applet id="socketApplet" width="100" height="100" archive="../../socketApplet.jar" name="socketApplet" code="socketApplet" scriptable="true">

我正在最新的MacOSX机器上测试最新版本的Firefox和Safari

编辑2: 我像这样创建并签署jar

编辑3: 好吧,现在我的罐子工作了几次(不是一排),我得到了

在控制台里

但大多数情况下,它不起作用。重新启动浏览器,清除缓存,一切都不起作用。现在(再次)在另一台电脑上测试此功能

编辑4:
好的,它运行在一个带有windows xp和java 32位7u25的虚拟机上——在我的64位mac上,30次尝试中只有1次。

好的,我找到了所有邪恶的根源

它与小程序无关。令人困惑的是,它在windows上的firefox中工作,而不是在mac上的firefox中工作(相同的FF版本,相同的java版本)。mac上的Safari无法运行,因为插件被禁用

所以这只是Firefox在mac上的问题。我已经测试了不同的情况,在将上面的小程序代码写入html页面时,小程序工作正常。之前,我已经动态创建了小程序(软件中需要的内容):

它可以在任何地方使用,但不能在Mac上的Firefox中使用。因此,作为一种解决方法,我必须将applet嵌入到iframe中,并且必须动态嵌入iframe。这很有效

    var mFrame      = document.createElement('iframe');
    mFrame.id       = 'testFrame';
    mFrame.height   = '200';
    mFrame.width    = '400';
    document.body.appendChild(mFrame);
    mFrame.src      = 'frame.html'; // contains the applet code
接下来,我将把html标记更改为对象,并嵌入IE支持的标记。谢谢你的帮助安德鲁·汤普森

我不喜欢iframe版本,因为通过javascript访问applet更复杂,但似乎没有其他方法

我将为此提交一份Mozilla错误通知单。

可能与此类似,但另一种情况是:
好吧,我找到了所有邪恶的源头

它与小程序无关。令人困惑的是,它在windows上的firefox中工作,而不是在mac上的firefox中工作(相同的FF版本,相同的java版本)。mac上的Safari无法运行,因为插件被禁用

所以这只是Firefox在mac上的问题。我已经测试了不同的情况,在将上面的小程序代码写入html页面时,小程序工作正常。之前,我已经动态创建了小程序(软件中需要的内容):

它可以在任何地方使用,但不能在Mac上的Firefox中使用。因此,作为一种解决方法,我必须将applet嵌入到iframe中,并且必须动态嵌入iframe。这很有效

    var mFrame      = document.createElement('iframe');
    mFrame.id       = 'testFrame';
    mFrame.height   = '200';
    mFrame.width    = '400';
    document.body.appendChild(mFrame);
    mFrame.src      = 'frame.html'; // contains the applet code
接下来,我将把html标记更改为对象,并嵌入IE支持的标记。谢谢你的帮助安德鲁·汤普森

我不喜欢iframe版本,因为通过javascript访问applet更复杂,但似乎没有其他方法

我将为此提交一份Mozilla错误通知单。

可能与此类似,但另一种情况是:

测试使用的浏览器是什么版本?启动小程序所用的HTML是什么?为了快速响应,我更新了主要帖子(见最后的编辑部分)建议:1)使小程序的宽度和高度为非零。网页中的0x0元素自动可疑,这可能会触发浏览器中更高级别的安全性,或者触发浏览器安装的用于查找可疑活动的任何工具。2) 添加
scriptable=“true”
属性以指示小程序可能从Javascript.ty调用,但仍然存在相同的问题。。在那些浏览器中工作吗?测试使用的是什么版本的浏览器?启动小程序所用的HTML是什么?为了快速响应,我更新了主要帖子(见最后的编辑部分)建议:1)使小程序的宽度和高度为非零。网页中的0x0元素自动可疑,这可能会触发浏览器中更高级别的安全性,或者触发浏览器安装的用于查找可疑活动的任何工具。2) 添加
scriptable=“true”
属性以指示小程序可能从Javascript.ty调用,但仍然存在相同的问题。。在那些浏览器中工作吗?更新:他们以“WONTFIX”的形式关闭了错误通知单-更新:他们以“WONTFIX”的形式关闭了错误通知单-