2

Java と JavaScript の間で双方向の通信が必要なプロジェクトに取り組んでいます。OS X のすべてのブラウザーで正常に動作させることができましたが、Windows の任意のブラウザーで実行するという課題に直面しています。現時点では、単に機能しません。

JavaScript が Java と通信するために何か特別なことをする必要があるかどうか疑問に思っています。

私のアプレットコードは次のようになります。

<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>

アプレットがロードされたら、次のように関数を呼び出してみます。

 alert("Call some java:" + theApplet.testFunc());

そして、firebug コンソールで次のエラーが表示されます。

theApplet.testFunc is not a function

これがIEでも機能しないことを確認できます。

ページがロードされたら、Java コンソールを開いて、アプレットが正常にロードされ、コールを受け入れる準備ができていることを確認できます。

どんな助けでも大歓迎です!

乾杯


更新: これは、私が呼び出そうとしているパブリック API を公開する、削除された Java コードです。

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 lib は署名されていませんでした。しかし、私自身の瓶はそうでした。Windows 上のブラウザでは、すべてのライブラリが署名されている必要があります。だから私はGsonをJavaファイルと一緒にパッケージ化し、ロットに署名し、問題を解決しました! みんなの助けに感謝します!

4

3 に答える 3

1

私は問題が正確に何であるかを理解しました。私が使用していた Gson lib は署名されていませんでした。しかし、私自身の瓶はそうでした。Windows 上のブラウザでは、すべてのライブラリが署名されている必要があります。だから私はGsonをJavaファイルと一緒にパッケージ化し、ロットに署名し、問題を解決しました! みんなの助けに感謝します!

于 2011-04-13T03:57:18.767 に答える
0

このapplet要素は非推奨であるため、少なくともFirefoxで機能する次のコードを使用します。

<object id="MyApplet" classid="java:com.example.myapplet"
  codetype="application/java" codebase="bin/" height="10" width="10"
</object>
于 2011-04-11T08:22:08.597 に答える
0
alert("Call some java:" + document.getElementbyId("theApplet").testFunc());

メソッドがアクセスtestFunc()として宣言されていることを確認してください。public

それでも問題が解決しない場合は、アプレットコードをSSCCEとして投稿してください。

ところで

正しくない

code="com/company/MyApplet.class" 

正しい

code="com.company.MyApplet" 

ところで2

正しくない

..scriptable="yes">

正しい

..scriptable="true">
于 2011-04-11T03:38:24.803 に答える