项目中有一个功能是通过扫描枪,扫描条形码之后,打开单据的功能。此功能使用的方法是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,谢谢!
一直在找这个,现在好像还没有找到别的呢