问题描述
我正在使用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 (将#修改为@)