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

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

Laughing
2017-07-26 / 0 评论 / 1,034 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2020年09月26日,已超过1574天没有更新,若内容或图片失效,请留言反馈。

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

问题分析

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

解决思路

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

上代码

  1. 我们定义一个阻止事件继续走的方法

    function stopDefault(e) {  
             //如果提供了事件对象,则这是一个非IE浏览器  
             if (e && e.preventDefault) {  
                 //阻止默认浏览器动作(W3C)  
                 e.preventDefault();  
             } else {  
                 //IE中阻止函数器默认动作的方式  
                 window.event.returnValue = false;  
             }  
             return false;  
         }
  2. window.open()方法后面,调用定义的阻止事件的方法

    var flag = window.open("url");  
    if (flag == null) {  
      alert("您的浏览器启用弹出窗口过滤功能!\n请暂时先关闭此功能!");  
      }  
      stopDefault(e.event);
0

评论 (0)

取消
  1. 头像
    多大的人
    MacOS · Safari

    thank you,谢谢!

    回复
  2. 头像
    yinan
    MacOS · Safari

    一直在找这个,现在好像还没有找到别的呢

    回复