ウィンドウJSObjectのLiveConnectgetMember(String)メソッドを使用すると、「Object」タイプのJavaオブジェクトが返されますが、それに定義されている期待されるメンバーが見つかりません。また、getMember()を引き続き使用するためにJSObjectにキャストすることもできません。
DOMノードおよび要素(DOMオブジェクト)へのアクセスは期待どおりに機能します。
ウィンドウJSObjectのLiveConnectgetMember(String)メソッドを使用すると、「Object」タイプのJavaオブジェクトが返されますが、それに定義されている期待されるメンバーが見つかりません。また、getMember()を引き続き使用するためにJSObjectにキャストすることもできません。
DOMノードおよび要素(DOMオブジェクト)へのアクセスは期待どおりに機能します。
私はその行に混乱していますgot2 = win.getMember("obj");
。foo
その行がオブジェクトを取得することを期待しているようです。私が理解しているように、存在しないDOMノードwin.getMember("obj")
のプロパティを取得します。たとえば、このページから:obj
window
JSObject win = JSObject.getWindow(this);
JSObject doc = (JSObject) win.getMember("document");
JSObject loc = (JSObject) doc.getMember("location");
オブジェクトを取得したい場合foo
、私が知っている最善の方法は、Javaアプレットから呼び出すことができるJavaScriptメソッドを作成することです。
JavaScript:
<script type="text/javascript">
var foo = {"one":1, "two":2};
function getFoo() { return foo; }
</script>
アプレット:
import netscape.javascript.*;
JSObject win;
JSObject foo;
void setup(){
size(400,200,P2D);
background(255);
win = JSObject.getWindow(this); //gets the root JSObject
foo = (JSObject)win.call("getFoo", null);
}
void draw(){
if (mousePressed == true){
println(foo.getMember("one"));
}
}