且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何从Java小程序访问JavaScript中定义的对象/数组

更新时间:2023-11-19 23:04:34

我对got2 = win.getMember("obj");行感到困惑.似乎您期望该行获取foo对象.据我了解,win.getMember("obj")将为您提供DOM window节点上不存在的obj属性.例如,来自此页面:

I'm confused by the line got2 = win.getMember("obj");. It seems like you're expecting that line to get the foo object. As I understand it, win.getMember("obj") will get you the obj property on the DOM window node, which doesn't exist. For example, from this page:

JSObject win = JSObject.getWindow(this);
JSObject doc = (JSObject) win.getMember("document");
JSObject loc = (JSObject) doc.getMember("location");

如果要获取foo对象,据我所知,***的方法是制作一个可从Java小程序调用的JavaScript方法.

If you want to get the foo object, the best way I'm aware of is to make a JavaScript method you can call from the Java applet.

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"));
  }
}