当primefaces
关闭时,我需要显示dialog
applet
,因为有一个thread
在完成后会做一些事情我想要隐藏对话框从页面。
为了做到这一点,我使用netscape.javascript.JSObject
使用了liveConnect。
这就像魅力一切都好。
问题是javascript函数被很好地调用,但是没有调用dialog.show()函数。
以下是代码:
function doit1() {
$(window).ready(function() {
statusDialog.show();
});
}
;
function doit2() {
$(window).ready(function() {
statusDialog.hide();
});
};
window.callJS = function() {
console.log("we're here 1");
doit1();
console.log("its here1");
};
window.callJS1 = function() {
console.log("we're here 2");
doit2();
console.log("its here2");
};
这些方法是从这样的applet调用的:
JSObject window = JSObject.getWindow(this);
window.call("callJS", null);
//do_some_thread_stuff();
window.call("callJS1", null);
以下是控制台中发生的事情:
we're here 1
its here1
we're here 2
its here2
所以,我真的错过了什么以及阻止对话显示的内容。
注意:当我使用chrome DevTools控制台执行doit()方法时,它们工作正常,但我得到了未定义的后果。
答案 0 :(得分:0)
问题在于线程,我在thread.start()
之前调用JS方法。
我把window.call(“callJS”,null);在线程内部,它工作正常。