jQuery函数不是从window变量调用的

时间:2014-04-21 11:26:50

标签: javascript jquery primefaces applet

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()方法时,它们工作正常,但我得到了未定义的后果。

1 个答案:

答案 0 :(得分:0)

问题在于线程,我在thread.start()之前调用JS方法。 我把window.call(“callJS”,null);在线程内部,它工作正常。