日期:2014-05-16 浏览次数:20603 次
对于前段时间提到过的“AJAX中弹出窗口连续弹出 ”的问题,提供了一种解决方案:将弹出窗口过程在前台js中实现,即可每次都弹出相同内容窗口。
对于这个解决方案,在部署到服务器时又遇到了问题,服务器为ie6,也许不兼容弹出窗口的js,弹出窗口的内容无法加载。
因此开始寻求第二个解决方案:
从本质原理出发,对于同一内容窗口第二次没有弹出的原因是,后台调用弹出窗口的代码完全相同(相同方法,方法参数也相同)
如果每次后台弹出窗口代码有变化就会引起ajax刷新,因而每次都会执行后台代码
从这一解决方案出发:
将后台弹出窗口方法改为:
protected void lnkTab_Click(object sender, EventArgs e)
{
Session["childQX"] = 1;
if (id1 == "0")
{
ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab2('" + hiddPropId.Value + "')", true);
id1 = "1";
}
else
{
ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab3('" + hiddPropId.Value + "')", true);
id1 = "0";
}
//AjaxPanel2.
//Refush();
}
通过切换调用不同js来弹出窗口,不同js都是相同的内容,只是赋予了不同的名字。
如此每次后台调用代码都会刷新,便可以连续弹出窗口。
此原理简化一下,用当前时间作为参数的方案,更简洁:
protected void lnkTab_Click(object sender, EventArgs e)
{
Session["childQX"] = 1;
ScriptManager.RegisterStartupScript(UpdatePanel1, GetType(), "onclick", "showTab2('" + hiddPropId.Value + ",'DateTime.Now')", true);
id1 = "1";
}