7

古き良きものを使用するアプレットを何年にもわたって維持してきました。

<script src="foo.js"></script> 

Javaアプレットを埋め込む方法だと、耳をふさいで「ラララ!」と歌うことができません。もう。

使用する時が来ました:

deployJava.runApplet()

クリック ハンドラーを使用してこのメ​​ソッドを起動すると (ここでは、jQuery を介してボタンでイベント リスナーを使用しますが、問題ありません):

$('#button').click(function() {
  deployJava.runApplet(attributes, parameters, version);
});

...既存のドキュメント全体を消去し、アプレットに置き換えます。私が知る必要があるのは、特定の DOM 要素を対象としてアプレットのコンテナーにする方法だけです。これにより、ページが消去されなくなります。

target: someElement「someElement」がDOMオブジェクトまたは文字列としての要素のIDのいずれかであるという形式で渡すことができる属性のようです。残念ながら、そのような属性のドキュメントは見つかりません。

完全を期すために、次のものが渡されます。

/*here is where I imagine there might be an applicable attribute */
var attributes = {
  name: "SomeName",
  code: "some.class",
  archive: "some.jar",
  width: 640,
  height: 400
};

var parameters = {
  someParameter: someValue
};

var version = "1.5";

ドキュメントを再構築するために必要なことはすべてできdocument.writeますが、その見通しが私にとってどれほど恐ろしいものであるかは、皆さんも十分に想像できると思います。

任意のポインタをいただければ幸いです。

4

4 に答える 4

4

したがって、問題の核心はこれです: deployJava.js uses document.write. このメソッドをページ レンダリング後に (最初のページ レンダリングの一部として) 使用すると、最初にドキュメントがクリアされます。これには明らかな悪影響があります。

JavaFX を対象としていますが、人々は dtjava.js で成功したと報告しており、私はそれが実行可能な代替手段であると信じる十分な理由があります。

しかし、私のチームの他の関係者はすでに deployJava.js に関する作業を行っており、その作業を放棄することを望んでいません。つまり、私は deployJava.js に固​​執する必要がありました。これを行う方法は 1 つだけです。Ajax、イベント、またはその他の遅延トリガーを介してではなく、ページのレンダリング中に deployJava が呼び出されるようにします。

最後に、情報を収集し、アプレットを期待どおりにレンダリングする 2 番目のページに渡します。それは機能し、ほとんどのシナリオでは、クライアントはとにかくこれを実行します (情報を収集し、サーバー側で渡し、リダイレクト応答を取得します)。そのため、問題を強制する意味がありませんでした。クエリ文字列を介して情報を渡していますが、window.location をきれいに保ちたい場合は、代わりに Cookie や localstorage API を使用できます。

コメント欄にも関わらず、返信ありがとうございます。誰かがそれを行うためのより良い方法を持っている場合、他の返信はまだ取り込まれています!

于 2012-11-23T15:41:19.103 に答える
1

この厄介な問題を解決するために、私は316行目でdeployJava.jsをダウンロードしてハッキングし、その行を自分のものに置き換えました。

  // document.write(n + "\n" + p + "\n" + r);
  myDiv.append(n + "\n" + p + "\n" + r);

myDivは、呼び出す前に目的のdivに設定されたjsグローバル変数ですrunApplet

myDiv = jQuery('#someDiv');

邪魔にならない解決策を見つけたら、私に知らせてください...

于 2013-02-28T15:33:42.547 に答える