项目中有一个功能是通过扫描枪,扫描条形码之后,打开单据的功能。此功能使用的方法是window.open()
,今天客户反馈在IE8下面,打开窗体之后,打开的页面接着被最小化了。
问题分析
通过分析代码,确定了是window.open()
方法导致的这个问题,但是当我仔细查看页面的输入框时,发现每次输入框会自动被清空,其实原因是因为keydown
事件中回车之后,当前窗体被重新加载了。
解决思路
其实发现了问题,解决就比较容易了。既然是窗体重新刷新导致窗体又变成了当前的窗体,那么我们在window.open()方法之后,阻止其他事件就可以了
上代码
- 我们定义一个阻止事件继续走的方法
function stopDefault(e) {
//如果提供了事件对象,则这是一个非IE浏览器
if (e && e.preventDefault) {
//阻止默认浏览器动作(W3C)
e.preventDefault();
} else {
//IE中阻止函数器默认动作的方式
window.event.returnValue = false;
}
return false;
}
- 在
window.open()
方法后面,调用定义的阻止事件的方法
var flag = window.open("url");
if (flag == null) {
alert("您的浏览器启用弹出窗口过滤功能!\n请暂时先关闭此功能!");
}
stopDefault(e.event);
thank you,谢谢!
一直在找这个,现在好像还没有找到别的呢