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

之前写的showModalDialog()方法,只能在IE中使用,在edge浏览器中会报错。显示Undefined。

后来发现是Edge浏览器不支持该方法,最快的解决办法就是转换一下。

原方法:

1 function preview() {
2         var result = showModalDialog('preview.aspx?Id=' + document.getElementById('hidpreviewid').value, window, 'dialogWidth:1000px;dialogHeight:620px;center:yes;help:no;resizable:no;status:no'); 
3             if (result) {
4 
5             }
6             else {
7 
8             }
9         }

后来在此方法下面加了一个转换的方法:

 1 function showModalDialogN(uri, args, opts) {
 2             if (!window.showModalDialog) {
 3                 showModalDialogN = function (uri, args, opts) {
 4                     opts = opts.replace(/:/g, '=')
 5                         .replace(/;/g, ',')
 6                         .replace('dialogWidth', 'width')
 7                         .replace('dialogHeight', 'height')
 8                         .replace('dialogtop', 'top')
 9                         .replace('dialogleft', 'left')
10                         .replace('scroll', 'scrollbars');
11                     window.open(uri, '', opts).dialogArguments = args;
12                 };
13             } else {
14                 window.showModalDialog(uri, args, opts);
15             }
16         }

 

然后把原方法中的showModalDialog直接改成showModalDialogN。完美解决!

 

感谢原作者:https://blog.csdn.net/ambit_tsai/article/details/80633290

还有整理的博主:模态窗口showModalDialog的浏览器兼容解决方案【改】 - 戈博折刀 - 博客园 (cnblogs.com)

posted on 2021-12-14 11:01  张不胖  阅读(3247)  评论(0编辑  收藏  举报

导航