質問

JNLPクラスの関数をJavaScriptに電話してもらうことができます。私のアプレットには、次のように定義された関数があると仮定しましょう。 public String returnSomething(){ return "bla"; }

   <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- ########################## IMPORTANT NOTE ############################ -->
<!-- This preview HTML page will work only with JDK 6 update 10 and higher! -->
<!-- ###################################################################### -->
<html>
    <head>
        <title>Test page for launching the applet via JNLP</title>
    </head>
    <body>
        <h3>Test page for launching the applet via JNLP</h3>
        <script src="http://java.com/js/deployJava.js"></script>
        <script>
            var attributes = {
                code:       "winToJnaApi.NewApplet",
                archive:    "JavaApplication6.jar, lib/jna.jar, lib/platform.jar",
                width:      300,
                height:     300,
                name:       "applet",
                id:         "app"
            };
            var parameters = {jnlp_href:"launch.jnlp"}; <!-- Applet Parameters -->
            var version = "1.5"; <!-- Required Java Version -->
            deployJava.runApplet(attributes, parameters, version);
        </script>

    <input type = "button" value ="click" onClick = "document.write(document.getElementById("app").doSomething())">
    <script type="text/javascript">
        document.write(document.getElementById("app"));
    </script>
    </body>
</html>

これは、JavaScriptからJNLPデプロイアップル機能を呼び出す適切な方法ですか?これは私に何も与えないからです。

役に立ちましたか?

解決

私はずっと前にそれを手に入れましたが、私は自分の質問に答えるのを忘れていました。だからここにある:

このようなアプレットを定義すると仮定しましょう。

<applet id="appletToTest" width=500 height=500 code="com.sample.SampleApplet" archive="JavaApplication6.jar, lib/lib1.jar, lib/lib2.jar">
   <param name="jnlp_href" value="launch.jnlp">
 </applet>

JavaScriptを入手できます!このようなアプレットを処理します:

var parentAPPLET = document.getElementById("appletToTest");

今、あなたがあなたのアプレットに持っている方法が何であれ、それは文字列または原始値を返す方が良いでしょうが、たとえそれがあなたがその方法を知っていると仮定してあなたはそれを操作することができないかもしれません。上記の私の例を継続します。アプレットにこのように定義されている関数がある場合は、次のようになります。

public String returnSomething(){ return "bla"; }

次に、このようなJavaScriptでそれを呼び出すことができます:

var parentAPPLET = document.getElementById("appletToTest");
alert (parentAPPLET.returnSomething()); 

おめでとうございます、JWSによって展開されたJavaScriptのJavaアプレットメソッドを呼びました。

それを行う別の方法がありますが、それはFirefoxでのみ機能するので、これをよりよく使用してください。テクノロジーが廃止されていても、LiveConnectルールは引き続き適用されます。

他のヒント

JNLPを使用して起動したアプレットはJSにアクセスできなくなったことを理解していますが、私は間違っているかもしれません。さらに調査するには、deployjava.jsを削除し、アプレット要素をハードコーディングすることをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top