从一个窗体回调另一个窗体方法,出现诡异的问题..(没有权限)

页面A,页面B
IE6
在页面A中弹出页面B (用JS弹出DIV,在里面嵌Iframe),页面B确认按钮触发页面A的
btnAddNetWork按钮事件进行异步更新,并关闭弹出窗体..  结果有一定机率报没有权限的错误。。


页面A相关代码:
<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
<ContentTemplate>
 
 <asp:Repeater ID="dgNetWork" runat="server" OnItemCommand="dgNetWork_ItemCommand"  
  OnItemDataBound="dgNetWork_ItemDataBound"> 
  <!--此按钮触发服务器事件,异步更新此处html内容--> 
 </asp:Repeater>
 <input class="btn" id="btnAddNetWork" runat="server" style="display: none;" type="button"
 value="添加网点" onserverclick='btnAddNetWork_Click' />
</ContentTemplate>
</asp:UpdatePanel>

       function AddMultNetWork(arrText, arrValue)
        {
            var hiIDs = document.getElementById("hiSelNetWorkIDs");
            hiIDs.value = "";
            for (var i = 0; i < arrText.length; i++)
            {
                if (!CheckNetWorkExists(arrValue[i]))
                {
                    hiIDs.value += "," + arrValue[i] + ",";
                }
            }
            if (hiIDs.value != "")
            {           
  //CloseWindowDiv(); //若加上此行
                document.all.btnAddNetWork.click();
            }
        }

页面B相关代码:
 在按钮确认事件中,关闭弹出JSForm,并触发A页面中的一个方法AddMultNetWork(),然后关闭本窗体
 window.parent.AddMultNetWork(arrText, arrValue);
 window.parent.CloseWindowDiv(); //若去掉此行

进行以下改动执行正确: 将页面B window.parent.CloseWindowDiv();这行放在页面A里就不会报错了

将页面B:
window.parent.CloseWindowDiv();去掉,
再将页面A的函数AddMultNetWork某处改成
     if (hiIDs.value != "")
            {          
                CloseWindowDiv();
                document.all.btnAddNetWork.click();
            }

总结思考:
 页面B调用页面A的两个方法
 window.parent.Method1(); //此方法里有异步ajax执行
 window.parent.Method2(); //此方法是同步执行
上面执行可能会出权限之类的js错误。。
将 Method2,放在 Method1里并且在异步Ajax执行之前就没问题了

posted on 2011-03-31 13:18  炼炁修士  阅读(543)  评论(0)    收藏  举报

导航