将代码中原来的

window.showModalDialog

全部替换成:

showModalDialogN

然后增加方法:

    function showModalDialogN(uri, args, opts){
if(!window.showModalDialog){
showModalDialogN = function(uri, args, opts){
opts = opts.replace(/:/g, '=')
.replace(/;/g, ',')
.replace('dialogWidth', 'width')
.replace('dialogHeight', 'height')
.replace('dialogtop', 'top')
.replace('dialogleft', 'left')
.replace('scroll', 'scrollbars');
window.open(uri, '', opts).dialogArguments = args;
};
}else{
window.showModalDialog(uri, args, opts);
}
}

参考:

模态窗口showModalDialog的浏览器兼容解决方案

2018-06-09 16:27:09 ambit_tsai-微信 阅读数 7321 收藏 更多

分类专栏: 前端日志
 
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。

博主遇到一个项目,拿以前的项目来改的,它所用框架的版本官方已经停止维护很多年了,而且以前项目遗留的代码那是“一言难尽”啊。
用chrome调试的时候,点击一个按钮毫无反应,控制台提示showModalDialog不存在。网上查了下,在MDN Web文档找到了温馨提示:

已废弃
该特性已经从 Web 标准中删除,虽然一些浏览器目前仍然支持它,但也许会在未来的某个时间停止支持,请尽量不要使用该特性。

  • “改是不可能改的,这辈子不可能改的” — 窃·格瓦拉

在博主看来,这种老爷车还是不要大修的好,于是自己动手进行兼容,如下借助window.open对它的行为进行模拟。

/**
* showModalDialog兼容处理
* 该特性已从Web标准中删除
* @author 范围兄 <ambit_tsai@qq.com>
*/
if(!window.showModalDialog){
window.showModalDialog = function(uri, args, opts){
opts = opts.replace(/:/g, '=')
.replace(/;/g, ',')
.replace('dialogWidth', 'width')
.replace('dialogHeight', 'height')
.replace('dialogtop', 'top')
.replace('dialogleft', 'left')
.replace('scroll', 'scrollbars');
window.open(uri, '', opts).dialogArguments = args;
};
}

模态窗口showModalDialog的浏览器兼容解决方案【改】的更多相关文章

  1. JS中模态窗口(showModalDialog)的详细使用

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

  2. CSS浏览器兼容解决方案

    1.在ie8的甑别上,如何让样式只对ie8起作用? 用ie浏览器独有的文档注释的方式.像这样: <!DOCTYPE html> <!--> <html class=&qu ...

  3. web前端~~浏览器兼容问题(百度)

    所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况.在大多数情况下,我们的需求是,无论用户用什么浏览器来查看我们的网站或者登陆我们的系统,都应该是统一的 ...

  4. web前端 关于浏览器兼容的一些知识和问题解决

    浏览器兼容 为什么产生浏览器兼容,浏览器兼容问题什么是浏览器兼容: 所谓的浏览器兼容性问题,是指因为不同的浏览器对同一段代码有不同的解析,造成页面显示效果不统一的情况. 浏览器兼容产生的原因: 因为不 ...

  5. JS 弹出模态窗口解决方案

    最近在项目中使用弹出模态窗口,功能要求: (1)模态窗口选择项目 (2)支持选择返回事件处理 在IE中有showModalDialog 方法,可以很好的解决该问题,但是在Chrome中和FF中就有问题 ...

  6. Example010实现浏览器兼容改内容的函数,自写

    <!-- 实例010实现浏览器兼容改内容的函数 --> <!DOCTYPE html> <html lang="en"> <head> ...

  7. Vue(SPA) WebPack模块化打包、SEO优化(Vue SSR服务端同构直出)、全浏览器兼容完整解决方案

    白驹过隙,时光荏苒 大概去年这个时候写了angular 结合webpack的一套前端方案,今年此时祭出vue2结合webpack的一套前端方案. 明年的这个时候我又是在做什么... 读在最前面: 1. ...

  8. py+selenium 无法定位ShowModalDialog模态窗口【已解决】

    问题:无法定位弹出的模态窗口. 前瞻: 模态窗口:关闭之前,无法操作其他窗口. 但是selenium无法定位到这类窗口,百度说是目前selenium不支持处理模态窗口. 目标:定位到窗口里面的元素,完 ...

  9. IE、FF、Safari、OP不同浏览器兼容报告

    IE.FF.Safari.OP不同浏览器兼容报告 1         浏览器内核简介 Trident IE浏览器(GreenBrowser绿色浏览器, 遨游浏览器....都是IE) Geckos Fi ...

随机推荐

  1. idea导入mybatis源码

    1.最近在学mybatis,想下载源码导入idea结果网上一查没有一篇完整的,结果让我进了个大坑,算了,废话少说 2.两种办法,一个是git客户端克隆,另外一个是下载code压缩包.先说通过git客户 ...

  2. eval用法

    在shell的学习中,我们会遇到这两种符号:反引号(` `)和$(),那么它们之间有什么区别和联系呢? 我们都知道在bash中,反引号和$()都是用来做命令替换的,命令替换就是用来重组命令行,先完成引 ...

  3. (05节)快速搭建SSM项目

    1.1  快速搭建Web项目 注意点:name:archetypeCatalog,value:internal 原因:Intellij IDEA根据maven archetype的本质,执行mvn a ...

  4. matplotlib--基本setting

    一.创建自定义图像 figure figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=Tr ...

  5. opencv想到的

    opencv是用C++写的库,包了多种语言接口,包括C,C++,python,java等. OpenCV 是一个开放源代码的计算机视觉库,目前在科研和开发中被广泛使用.OpenCV 由一系列 C 函数 ...

  6. c#每天生成漂亮桌面背景、英文名言、翻译

    阅读目录 一.1. 下载bing.com壁纸查询API 二.2. 解析返回的壁纸JSON信息 三.3. 下载完成的壁纸图片 阅读目录 .NET生成漂亮桌面背景 .NET生成漂亮桌面背景 总结 回到目录 ...

  7. 使用python处理selenium中的获取元素属性

    # 获取我的订单元素class属性值 get_class_name = driver.find_element_by_link_text('我的订单').get_attribute('class') ...

  8. 20180418模拟赛T1——Seq

    Seq (seq.cpp/c/pas) 题目描述 Description 木吉要去征讨VAN様,所以他现在需要从他身边的人中选出若干位陪同.现在有\(n\)个人站成一行,木吉要从其中选出\(2\)批在 ...

  9. 关于python Tk中实时的输出.

    源码如下: import time from Tkinter import * def run(): while True: txt.insert(END,'...') print '...' tim ...

  10. 瀑布流插件|jquery.masonry|使用demo

    Maonsry+Infinite-Scroll实现滚动式分页,网上有很多,这里只说: 瀑布流插件的一个基本使用,附上基本功能的demo <html> <head> <me ...