解决IE8下window.open打开的窗体不是当前窗口的问题

原创 Laughing  2017-07-26 19:14  阅读 101 次 评论 0 条

项目中有一个功能是通过扫描枪,扫描条形码之后,打开单据的功能。此功能使用的方法是window.open(),今天客户反馈在IE8下面,打开窗体之后,打开的页面接着被最小化了。

问题分析

通过分析代码,确定了是window.open()方法导致的这个问题,但是当我仔细查看页面的输入框时,发现每次输入框会自动被清空,其实原因是因为keydown事件中回车之后,当前窗体被重新加载了。

解决思路

其实发现了问题,解决就比较容易了。既然是窗体重新刷新导致窗体又变成了当前的窗体,那么我们在window.open()方法之后,阻止其他事件就可以了

上代码

温馨提示

首先,我们定义一个阻止事件继续走的方法

  1. function stopDefault(e) {  
  2.             //如果提供了事件对象,则这是一个非IE浏览器  
  3.             if (e && e.preventDefault) {  
  4.                 //阻止默认浏览器动作(W3C)  
  5.                 e.preventDefault();  
  6.             } else {  
  7.                 //IE中阻止函数器默认动作的方式  
  8.                 window.event.returnValue = false;  
  9.             }  
  10.             return false;  
  11.         }  
温馨提示

然后,在window.open()方法后面,调用定义的阻止事件的方法

  1. var flag = window.open("url");  
  2. if (flag == null) {  
  3.   alert("您的浏览器启用弹出窗口过滤功能!\n请暂时先关闭此功能!");  
  4.   }  
  5.   stopDefault(e.event);  
本文地址:https://www.lisen.me/solve-ie8-under-the-window-the-open-form-is-not-the-problem-of-the-current-window-open.html
版权声明:本文为原创文章,版权归 木子网 所有,欢迎分享本文,转载请保留出处!

发表评论


表情