Google Chrome已删除对以下博客网址中所述的showmodaldialog功能的支持。 http://blog.chromium.org/2014/07/disabling-showmodaldialog.html
我的网页几乎没有错误,我想如果我可以获得showmodaldialog的实现并将其放在我的基本母版页上。
我正在尝试从https://chromium.googlesource.com/chromium/src下载源代码但遇到一些SSL错误:无法获得本地颁发者证书。
任何人都可以向我提供所述方法的源代码及其依赖方法,以便我可以直接在我的网页上使用它来显示弹出窗口。
答案 0 :(得分:0)
我在页眉中添加了以下javascript,似乎可以正常工作。它检测浏览器何时不支持showModalDialog并附加使用window.open的自定义方法,解析对话框规格(高度,宽度,滚动等),以开启器为中心并将焦点设置回窗口(如果焦点丢失)。如果您将窗口args传递给模态,则需要编写一些额外的代码来修复它。弹出窗口不是模态的,但至少你不需要改变很多代码。可能需要为你的情况做一些工作。
<script type="text/javascript">
// fix for deprecated method in Chrome 37
if (!window.showModalDialog) {
window.showModalDialog = function (arg1, arg2, arg3) {
var w;
var h;
var resizable = "no";
var scroll = "no";
var status = "no";
// get the modal specs
var mdattrs = arg3.split(";");
for (i = 0; i < mdattrs.length; i++) {
var mdattr = mdattrs[i].split(":");
var n = mdattr[0];
var v = mdattr[1];
if (n) { n = n.trim().toLowerCase(); }
if (v) { v = v.trim().toLowerCase(); }
if (n == "dialogheight") {
h = v.replace("px", "");
} else if (n == "dialogwidth") {
w = v.replace("px", "");
} else if (n == "resizable") {
resizable = v;
} else if (n == "scroll") {
scroll = v;
} else if (n == "status") {
status = v;
}
}
var left = window.screenX + (window.outerWidth / 2) - (w / 2);
var top = window.screenY + (window.outerHeight / 2) - (h / 2);
var targetWin = window.open(arg1, arg1, 'toolbar=no, location=no, directories=no, status=' + status + ', menubar=no, scrollbars=' + scroll + ', resizable=' + resizable + ', copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left);
targetWin.focus();
};
}