如何在Mozilla Rhino中获得当前使用的“变量”

问题描述

我正在使用Mozilla Rhino,并且想要在Javascript脚本中执行类似的操作:

var widget = document.getElement("label");
widget.label = "LABEL";

我想在我的Java代码中知道我正在访问的对象。例如,在这里我想知道我正在尝试设置小部件的label属性。可以在Rhino中注册一种听众知道吗?

目前,我创建了一个ScriptableObject,用于处理所有脚本。我正在“顶级”可编写脚本的对象中执行此操作:

  ContextFactory factory = ContextFactory.getGlobal();
  ctx = factory.enterContext();
  setClassLoaderToApplication(factory,ctx,loader);
  ctx.initStandardobjects(this);

  ScriptableObject.defineClass(this,myClass); // myClass is a ScriptableObject)
  ScriptableObject object  = (ScriptableObject)ctx.newObject(this,myClass.getSimpleName());
  this.put("document",this,object);

我正在处理创建的对象中的所有函数(例如,此处的jsFunction_getElement(String id)函数),它可以工作,但是我无法知道我在哪个“上下文”上工作,这意味着上面的示例无法正常工作,因为我不知道我在使用哪个“小部件”。

目前我有例如:

public MyScriptableObject jsFunction_getElementById(String elementId) {
   MyWidget widget = getWidget((String) arg);
   return this;
}

它之所以有效,是因为我一直在使用MyScriptableObject ScriptableObject,但是我当然不知道在那之后我要在哪个“小部件”上工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)