记录一下
最近在维护一个项目,使用IE一切正常,但是切谷歌的话 正常登陆都不行了。
检查了一下 发现报错。

后来查了一下 发现 window.showModalDialog 方法在很久以前就被弃用了!!!

前期解决方案:用window.open来替代。(有bug 别用!!!

// 定义一个全局变量判定是否原生支持showModalDialog方法
var has_showModalDialog = !!window.showModalDialog;
if(!has_showModalDialog){//定义window.showModalDialog如果它不存在if(window.showModalDialog == undefined){window.showModalDialog =  window.open(url, "_blank", "width="+screen.availWidth+",height="+screen.availHeight+",scroll=0");}
}

把上面这段代码直接加到使用window.showModalDialog之前就好了。
上面这个用后会出现一个问题:由于原有页面未关闭,当从子页面返回后会报错,需刷新后可用。

后期解决方案:用js判断当前使用的浏览器是不是IE (无bug可用!!!)

if(IEVersion() == -1 || IEVersion() == "edge"){window.showModalDialog =  window.open(url, "_blank", "width="+screen.availWidth+",height="+screen.availHeight+",scroll=0,");
}function IEVersion() {var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串  var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1; //判断是否IE<11浏览器  var isEdge = userAgent.indexOf("Edge") > -1 && !isIE; //判断是否IE的Edge浏览器  var isIE11 = userAgent.indexOf('Trident') > -1 && userAgent.indexOf("rv:11.0") > -1;if(isIE) {var reIE = new RegExp("MSIE (\\d+\\.\\d+);");reIE.test(userAgent);var fIEVersion = parseFloat(RegExp["$1"]);if(fIEVersion == 7) {return 7;} else if(fIEVersion == 8) {return 8;} else if(fIEVersion == 9) {return 9;} else if(fIEVersion == 10) {return 10;} else {return 6;//IE版本<=7}   } else if(isEdge) {return 'edge';//edge} else if(isIE11) {return 11; //IE11  }else{return -1;//不是ie浏览器}
}

还发现一个问题:使用window.open 打开子页面时,头部的地址栏无法隐藏!!!

关于window.open的详解:https://www.w3cschool.cn/jsref/met-win-open.html
判断是否是IE浏览器:https://www.cnblogs.com/liuyanxia/p/5855760.html

OK 结束了!!!

替换window.showModalDialog 已解决!!!相关推荐

  1. window.showModalDialog不兼容解决办法

    1.传值的解决办法 1.直接设置父窗口的DOM对象的值. window.opener.document.getElementById("parentWindowControlId" ...

  2. window.showModalDialog();会弹出当前页面脚本发生错误部分解决方法

    说明一下下面都是我在做项目时的方法但查window.showModalDialog();会弹出当前页面脚本发生错误时没有方法所以我选择一个自认为可以的方法解决这个问题 一.首先说说我要做的效果是什么: ...

  3. 解决window.showModalDialog在Firefox无法支持

    解决window.showModalDialog在Firefox无法支持   2014-11-27 22:24:21|  分类: UI设计 |  标签: |举报 |字号大中小 订阅 用微信  &quo ...

  4. window.showModalDialog模式窗口无法在子窗口访问解决办法

    window.showModalDialog打开的模式窗口无法在子窗口访问 如:window.showModalDialog("A.aspx", null, "help: ...

  5. 总结JavaScript(Iframe、window.open、window.showModalDialog)父窗口与子窗口之间的操作

    前些日子,一直奔波于这三种操作,想想以后会常用,干脆整理下来,供自己以后查看.也给大家分享一下! 以下面写出自己认为有用的操作和代码. 第一次在园里面写,肯定有很多不足够之处,希望大家多多指点. 一. ...

  6. window.showModalDialog() 过时替代方案

    一.window.showModalDialog 方法说明 window.showModalDialog( ) 方法的作用是创建和展示一个指向特定网页的模态对话框. 该方法已经过时,特性已经从 Web ...

  7. window.open()和window.showModalDialog 的使用及传值操作

    本人在使用时主要实现如下个功能, 以对话框形式弹出画面,且要求对话框置顶,不可操作其他画面,并且关闭画面时刷新父页面. window.open 可实现以对话框形式弹出画面,并且关闭画面时刷新父页面.但 ...

  8. 解决手机訪问站点时总体相对屏幕缩小问题?(已解决)

    解决手机訪问站点时总体相对屏幕缩小问题?(已解决) 自己开发出来的站点,在手机上訪问时,总是总体小了一块.不能非常好的适应屏幕,每次都要用手指再放大到合适尺寸,后发现,须要在开发代码中加入: < ...

  9. window.showModalDialog用法介绍

    基本介绍: showModalDialog() (IE 4+ 支持) showModelessDialog() (IE 5+ 支持) window.showModalDialog()方法用来创建一个显 ...

最新文章

  1. Seaborn使用violinplot函数可视化多分组小提琴图(violin plot)、每个小提琴图内部包含两个分组、使用inner函数设置在小提琴图中使用虚线显示分位数位置
  2. 添加时间数据时 出现多一天或者少一天的问题 解决方案
  3. Thinkphp怎样修改模板标签定界符
  4. 网络工程师专业词汇解释(路由器)
  5. java stw_JVM STW里的no vm operation是怎么发生的
  6. 坏掉的项链Broken Necklace
  7. 高通最强芯片855发布!AI性能比华为苹果翻倍,商用5G,标配屏下指纹
  8. 分屏如何保持运行状态_如何提升心理素质,在比赛中保持更好的状态
  9. Oracle中可以代替like进行模糊查询的方法instr(更高效)
  10. python用matplotlib画雷达图_matplotlib雷达图
  11. 支付宝支付出现该商户未开通支付宝服务,无法付款
  12. Kafka Message Dilivery Semantics
  13. Linux驱动编写入门-新解
  14. windows逻辑卷扩容_Windows 动态磁盘卷:简单卷、跨区卷 、带区卷 、镜像卷 、RAID5卷 相关配置操作介绍...
  15. 位列腾讯网易后面,三七互娱要页游“赚”云游戏?
  16. 安装Tomcat步骤
  17. 2021-9.15基于目标速度的汽车 ACC系统油门控制策略研究-童宝锋
  18. HDU 1495 非常可乐(BFS||数论)
  19. 第十二章 项目采购管理
  20. 吉尼斯计算机打字记录,吉尼斯世界纪录打字

热门文章

  1. python 图像等比例缩放
  2. 比例及比例的基本性质
  3. 令人吃惊的模拟电路 - 嵌入式系统的电气隔离
  4. 七.卡尔曼滤波器开发实践之七: 无损卡尔曼滤波器(UKF)进阶-实例篇
  5. 在GoDaddy上部署SubText
  6. 机器视觉未来发展方向
  7. wifi定位技术的优势
  8. 仿QQ空间的评论编辑器实现
  9. 爱因斯坦五五问题(zebra问题)斑马问题
  10. 上海XXXX IDC新建工程项目 - 数据中心方案應考慮事项及整體思路