Как получить доступ к объектам / массивам, определенным в JavaScript, из Java-апплетов - PullRequest
1 голос
/ 05 февраля 2009

Используя метод LiveConnect getMember (String) окна JSObject, возвращается Java-объект типа «Объект», но я не могу найти ожидаемые члены, определенные для него. Я также не могу привести его к JSObject для продолжения использования getMember ().

Доступ к узлам и элементам DOM (объектам DOM) работает должным образом.

1 Ответ

0 голосов
/ 05 февраля 2009

Я смущен линией got2 = win.getMember("obj");. Кажется, вы ожидаете, что эта строка получит объект foo. Насколько я понимаю, win.getMember("obj") даст вам свойство obj на узле DOM window, которого не существует. Например, с эта страница :

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

Если вы хотите получить объект foo, лучший из известных мне способов - это создать метод JavaScript, который вы можете вызывать из Java-апплета.

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"));
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...