2011-09-13 2 views
1

すべてのフレームが同じWebサーバーからロードされるマルチフレームWebアプリケーションの1つのフレームにアプレットがある場合、そのアプレットは他のフレームでJavaScriptメソッドをどのように呼び出すことができますか?私はこのようなものを試しました:アプレットは(同じWebサイトの)異なるフレームのメソッドをどのように呼び出すことができますか?

jsobject.call("parent.otherFrame.methodToCall", new String[] {"argument"}); 

私はその機能が存在しないという苦情を受けます。しかし、私がこのように呼び出すと:

jsobject.eval("parent.otherFrame.methodToCall('argument')"); 

それが動作します。私はevalの使用を避けようとしています。アプレットとは異なるフレームにcallというコードを呼び出していますが、これは各ブラウザとJVMの組み合わせで異なる動作をする可能性がありますか? evalは部分的にアプレット側ではなくJavaScriptエンジンで評価されるので安全ですか?

答えて

1

evalをせずに同等のコードは、おそらくこのようなものである:他の答えはも良好であったものの

jsobject = (JSObject)jsobject.getMember("parent"); 
jsobject = (JSObject)jsobject.getMember("otherFrame"); 
jsobject.call("methodToCall", new String[] {"hello!"}); 
+0

、この答えは私の質問の意図に近いです。ありがとう! – Eddie

2

マイ(限られた)Javaアプレットの組み合わせでの経験は、JavaScriptおよび(恐ろしい)フレーム、それが最善であるということです。

  • はそれでアプレットのページ/フレームでスクリプトを含めます。 0以上の引数で呼び出されることを意図した関数を定義します(その1つは、対象フレームの名前かもしれません)。
  • アプレットから関数を呼び出します。
  • JavaScriptは、実行する必要があることを行う正しいフレーム&を見つけ出すのに大変です。

これには多くの利点があります。

  • (たとえば)FFエラーコンソールを使用してJSをデバッグするのは、Javaコンソールを使用するよりも簡単です。
  • JSをより迅速かつ簡単に更新することができます。
  • それぞれの言語は、それがうまくいくものをエンコードします。 Javaのエディタに入り、Javaの形式を整え、JSエディタを使ってJSの形式を整えます。逆に、 "Javaで書かれたJS"を読もうとするのとは対照的に、怖い経験です。
  • スクリプトがうまく動くように助けを求めるときは、JSの達人が簡単に読むことができるきちんとした例があります。
関連する問題