您的位置:首页 > 运维架构

[工作问题总结]window.open导致IE自动关闭问题总结[2]

2013-06-10 22:48 531 查看
------------------------------ASP.Net+Android+IO开发 .Net培训 期待与您交流!------------------------------

先总结下曾今在之前的window.open导致IE自动关闭问题总结[1]中总结到,仅走前台不会导致浏览器的禁止弹出......

但在我们真正开发的时候,不得不走后台怎么办呢? 我就遇到这个问题.

先将自己的解决方法总结下,但我并不承认是多么好的方法,但至少还没有测出什么bug来.

走ajax,但如果在ajax中的success和error中写代码的话,及会造成浏览器的禁止弹出......所以 我稍微走了捷径.

(1)后台自动产生html普通按钮代码

foreach (DataRow dr in dsEmpInfo.Tables["Employee"].Rows)
{
var btnEmp = new System.Web.UI.HtmlControls.HtmlInputButton();//普通按钮
btnEmp.Attributes.Add("id", "");
btnEmp.Attributes.Add("value", "");
btnEmp.Attributes.Add("class", "");
btnEmp.Attributes.Add("onclick", "var result = funSetSession('" + (string)dr["EmpAccount"] + "');if(result) {funOpenUnitFrame('" + (string)dr["EmpAccount"] + "');}else{funReturn();}");
divEmp.Controls.Add(btnEmp);
}

重点代码在加onclick方法:先走funSetSession方法,如果返回true则走funOpenUnitFrame这个方法否则走funReturn

(2)前台funSetSession方法,里面走ajax

function funSetSession(empAccount) {
var result = false;
var ajaxUrl = "EmpLoginPortal.aspx?ajaxMethod=SetEmpAccount&EmpAccount=" + empAccount;
$.ajax({
type: "POST", //提交方式
url: ajaxUrl,
dataType: "text", //类型
async: false,
success: function (data) {
if (data == "SUCCESS") {
result = true;
} else {}
},
error: function () {}
})
return result;
}


(3)funSetSession方法 返回true则window.open,此方法还能保证一直仅弹出一个win

function funOpenUnitFrame(empAccount) {
if (win) {
if (!win.closed) {
win.close();
}
win = window.open(WINDOW_URL, WINDOW_NAME, WINDOW_ATTRS);
} else {
win = window.open("", WINDOW_NAME, WINDOW_ATTRS);
if (win.location.href === "about:blank") {
win = window.open(WINDOW_URL, WINDOW_NAME, WINDOW_ATTRS);
} else {
win.close();
win = window.open(WINDOW_URL, WINDOW_NAME, WINDOW_ATTRS);
}
}
}


(4)funSetSession方法 返回false则返回首页

function funReturn() {
var LoginPortal = './GrandsysLoginPortal.aspx';
window.top.location.replace(LoginPortal);
}


window.open 真心挺讨厌的,貌似<a>的href也可以有window.open的功能,但没研究过......以后有机会总结......

------------------------------ASP.Net+Android+IO开发 .Net培训 期待与您交流!------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: