http://community.csdn.net/Expert/topic/3238/3238827.xml?temp=.119137

解决方案 »

  1.   

    将窗口对象做为参数传给模态窗口window.showModalDialog("test.htm",window);
    -----------------------------------
    模态窗口中alert(dialogArguments.document.body);
      

  2.   

    http://www.csdn.net/Develop/read_article.asp?id=15113
      

  3.   

    to All:
    谢谢各位的帮助!我这里的具体情况是这样的:目前已经写好一个基于ASP.NET的B/S系统,客户端完全用js控制,有n多模块,js总共将近5万行。要在客户端保存用户的设置,我们使用behavior = "url(#default#userData);";的方法。封装了两个方法,如下:function SetCookie(sName, sValue)
    {
       var _userData = document.getElementById('_userData');
    if (!_userData)
    {
    if (document && document.body)
    {
    _userData = document.createElement("span");
    _userData.id = "_userData";
    _userData.style.behavior = "url(#default#userData);";
    document.body.appendChild(_userData);
    _userData.load("_userData");
    }
    }
    if (!_userData)
    {
    return;
    }
    _userData.setAttribute(sName,sValue);
    _userData.save("_userData");
    }function GetCookie(sName)
    {
      var _userData = document.getElementById('_userData');
    if (!_userData)
    {
    if (document && document.body)
    {
    _userData = document.createElement("span");
    _userData.id = "_userData";
    _userData.style.behavior = "url(#default#userData);";
    document.body.appendChild(_userData);
    _userData.load("_userData");
    }
    }
    if (!_userData)
    {
    return "";
    }
    var sValue = _userData.getAttribute(sName);
    return !!sValue ? sValue : "";
    }还做了一个人员选择控件,在主窗口和弹出窗口中都已经大量使用。现在客户提出上一次的人员选择结果要保存下来,以便下一次作为默认选项(不能存在临时变量中,客户要求重起客户端后仍然能使用上一次的默认值)。所以只能修改该人员选择控件。问题是:如果在弹出窗口中调用上述的两个函数保存数据(调用的js代码可以由人员选择控件自动写到窗口中),在主窗口onunload时再保存数据的话,弹出窗口保存的数据就会消失。原因可能是因为两次保存使用的_userData不是同一个对象。所以现在需要在SetCookie和GetCookie中先判断当前窗口是否是弹出窗口,如果是则使用它的父窗口的_userData或在其父窗口中创建之。在window.showModalDialog中多传一个参数是可以的,但是这样就必须修改每一个模块的代码。