本来父窗口调用子窗口实现是挺简单的,如下:
var handle = window.open("XXX.html");
handle.showDatas(datas);showDatas就是定义在子窗口中的JS函数,datas就是我要传给它的数据。
本来一切都没问题,但是,但是来了。handle.showDatas(datas);这个函数的功能是把数组datas中的数据显示到表格中。但这一句不是每次都成功的,有时候数据能显示出来,有时候又无法显示。我发现,这样写倒是每次能出来:
var handle = window.open("XXX.html");
alert(1);
handle.showDatas(datas);但alert不能随便加,于是我修改成。
handle.focus();但还是有时出来有时不出来,气愤。
希望您能帮我解开这个症结,先谢谢了!

解决方案 »

  1.   

    是先加载页面xxx.html 然后在去掉函数。当xxx.html没有加载完使,你掉handle.showDatas(datas);当然不会有数据。 把函数放在xxx.html页面中去加载,就不会出现这个问题了。
      

  2.   

    要么把datas传到子窗口然后onload
    要么延迟加载
    function loadData(){
      handle.showDatas(datas);
    }
    setTimeout(loadData,2000);
      

  3.   


    原因我明白了。
    >>把函数放在xxx.html页面中去加载,就不会出现这个问题了。
    这里具体这么做?
      

  4.   


    延迟还是有风险,请问不用函数如何把datas传到子窗口?
      

  5.   

    数据可以通过window对象接纳,但在onload里面再载入显示还是时灵时不灵。
      

  6.   

    在父页面我是这样做的:
    var wnd=window.open(url。);
    wnd.datas=datas;  // 这里是把数据传给子页面
    在子页面里我写了这样的延时
    setTimeOut(showDatas(window.datas),1000);
    以上showDatas是子页面里面定义好的加载数据的函数。这样做怎么会没有意义呢,我先用Ajax请求后台修改记录,修改成功的信息回传回来再用小窗口显示一下,这样全通过JS进行,小窗口就不用再请求后台一次了。