首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript通信使用LiveConnect不工作

Javascript通信使用LiveConnect不工作
EN

Stack Overflow用户
提问于 2011-04-11 01:10:05
回答 3查看 2.3K关注 0票数 2

我一直在从事一个需要在Java和JavaScript之间双向通信的项目。我已经成功地让它在OS的所有浏览器上工作,但是我现在面临着让它在任何浏览器下运行在Windows上的挑战。目前它根本不起作用。

我只是想知道,为了让JavaScript与Java进行通信,我是否需要做一些特殊的事情?

我的applet代码如下所示:

代码语言:javascript
复制
<applet id='theApplet' 
    code="com/company/MyApplet.class" 
    archive="SMyApplet.jar" 
    height="50" width="900" 
    mayscript="true" scriptable="yes">
        Your browser is ignoring the applet tag.
</applet>

加载了applet之后,我尝试像这样调用它上的函数:

代码语言:javascript
复制
 alert("Call some java:" + theApplet.testFunc());

在firebug控制台中,我得到以下错误:

代码语言:javascript
复制
theApplet.testFunc is not a function

我可以确认这在IE中也不起作用。

当页面加载时,我打开了java控制台,我可以看到applet正在成功加载并准备好接受调用。

任何帮助都将不胜感激!

干杯

更新:下面是剥离的java代码,公开了我试图调用的公共api。

代码语言:javascript
复制
package com.company;

import com.google.gson.Gson;

import java.applet.*;
import java.io.*;
import java.net.*;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.*;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.*;

import netscape.javascript.*;

public class MyApplet extends Applet implements Runnable
{
    public void init() 
    {
        JSON = new Gson();
        isReadyVar = 0;
        workThread = null;
    }

    public void start()
    {
    }

    public void run()
    {
        System.out.println("Done");             
    }


    public void stop()
    {
    }

    public void destroy()
    {
    }

    /* Public API */

    public int testFunc()
    {
        return 200;
    }
}

更新解决

我搞清楚了到底是什么问题。原来我使用的Gson库没有签名;但是我自己的jar是。windows上的浏览器要求所有的lib都被签名;所以我用java文件打包了Gson &签名,它解决了问题!谢谢大家的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-13 03:57:18

我搞清楚了到底是什么问题。原来我使用的Gson库没有签名;但是我自己的jar是。windows上的浏览器要求所有的lib都被签名;所以我用java文件打包了Gson &签名,它解决了问题!谢谢大家的帮助!

票数 1
EN

Stack Overflow用户

发布于 2011-04-11 03:38:24

代码语言:javascript
复制
alert("Call some java:" + document.getElementbyId("theApplet").testFunc());

确保testFunc()方法声明为public access。

如果这不起作用,那么将applet代码作为一个SSCCE发布。

BTW

不正确

代码语言:javascript
复制
code="com/company/MyApplet.class" 

校正

代码语言:javascript
复制
code="com.company.MyApplet" 

BTW 2

不正确

代码语言:javascript
复制
..scriptable="yes">

校正

代码语言:javascript
复制
..scriptable="true">
票数 0
EN

Stack Overflow用户

发布于 2011-04-11 08:22:08

由于不推荐使用applet元素,所以我使用以下代码,至少在Firefox中是这样的:

代码语言:javascript
复制
<object id="MyApplet" classid="java:com.example.myapplet"
  codetype="application/java" codebase="bin/" height="10" width="10"
</object>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5615886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档