3

LiveConnectは、JavaとJavaScriptを橋渡しするMozillaテクノロジーです。驚くべきことに、彼らはFirefoxの最近のバージョンで再びそれを維持し始めました。Firefoxで私は例えば書くことができます

var d = new java.util.Date();

またはPackages.、java.somethingでない場合は、名前空間を使用します

var d = new Packages.java.util.Date();

または私は夢中になって、スイングでファクトリメソッドを呼び出すことができます

Packages.javax.swing.Box.createVerticalBox();

Javaオブジェクトを簡単にインスタンス化できます。ieで動作する同等のものはありますか?

4

6 に答える 6

5

Internet Explorerでできることは、やりたいことを実行するメソッドを公開するアプレットをページにロードすることです。アプレットへの参照を取得し、その参照でメソッドを呼び出します。

<applet id="myAppletId" name="myAppletName" ...>

var applet = document.getElementById('myAppletId');
var d = applet.getDateFromApplet();

アプレットにはgetDateFromApplet()、を返すパブリックメソッドが必要java.util.Dateです。

私が提示するものは機能するはずですが、これを実行してから何年も経っています(当時、NS4、6、およびIE 4+で機能していました)。使用しませんでしたgetElementById()が、使用しvar applet = document.myAppletName;ました。

これに対する他の厄介な問題は、これをページの読み込み時に実行したい場合、アプレットはほぼ確実に準備ができていないことです。これには、次のようなコードが必要です。

function checkApplets() {
    var da = document.applets; // document.getElementsByName('applet');?

    if (da.length > 0) {
        for (var ii = da.length; ii-- > 0;) {
            if (!da[ii].isActive()) {
                window.timerId = setTimeout(checkApplets, 250);
                return;
            }
        }

        if (window.timerId) {
            clearTimeout(window.timerId);
        }
    }

    window.appletsLoaded = true;
}

最後に、タグを使用してこれを実行できる可能性がありますが、前述し<object>たように、クライアント側のJavaScriptからこの方法でJavaアプレットを操作する必要があったので、テストしていません。 。

于 2009-08-18T19:24:53.753 に答える
4

Mozilla固有のJavaScript/JavaブリッジであるLiveConnectを使用しています。他のブラウザではサポートされていません。

于 2009-08-18T19:24:09.903 に答える
2

オブジェクトのプロパティをJAVAのサーブレットからのJSON応答で利用できるようにすることはできますか?JSはJSONを簡単に使用でき、軽量であるため、JavaオブジェクトからJSオブジェクトを簡単に作成できます。

また、Rhino JavaScriptエンジンを見て、JavaScriptからJavaリソースを利用できるようにします。 https://developer.mozilla.org/en-US/docs/Rhino_documentation

于 2012-10-01T15:21:42.607 に答える
1

私の知る限り、これは不可能だと思います。JavaとJavascriptは完全に異なります。Java APIと同様に、JSAPIにDateオブジェクトが含まれているのは偶然です。

編集: Java Scripting API(http://java.sun.com/javase/6/docs/technotes/guides/scripting/programmer_guide/index.html#jsengine)は、現在の状況に最も近いようです。やろうとしています。

于 2009-08-18T19:15:40.170 に答える
1

Java 1.6アップデート10以降、Inter-Language LiveConnect Bridgeは、Firefoxで使用可能なPackagesオブジェクトと同様に、Packagesオブジェクトをページ内のアプレットにアタッチします。したがって、Internet Explorerでも、少なくとも1つのアプレットがあるページでは

new document.applets[0].Packages.java.util.Date().toString();

現在の日付を返します。また、Java仮想マシンで実行されているJava以外の言語に簡単にアクセスできるように、新しいコンバーターを登録することもできます。もちろん、JavaFXはそのようなブリッジを実装しています。

JavaScriptから呼び出す前に、アプレットがロードされるのを待つ必要はないはずですが、おそらくそれは良い考えです。Javaプラグインは、アプレットのロードが完了するかエラーが発生するまでJavaScriptを待機させます。Applet.init()が呼び出されるとすぐに、アプレットがWebページでJavaScriptを呼び出すことができます。

于 2009-08-19T04:05:59.820 に答える
0

DWRまたはその他のリバースajaxライブラリを使用して、Javascriptオブジェクトを介してサーバー側でJavaオブジェクトを作成できるようにすることもできます。

于 2009-08-18T19:26:48.477 に答える