本文内容参考网上实例,结合自己实践进行总结
参考地址:https://www.evget.com/article/2011/10/11/16665.html
自己实现代码:
var nowindex = $("#PreviewOcx").css('z-index');
//这个地方最好使用ActiveX容器object,并且在html中不要手动设置该object的zindex, 自己设置过后出现一些不明白的情况,比如说设置大于1000后对话框不能显示,所以最好不设置,具体原因不详
if (document.getElementById("__iframeBodyCover") == null) {//判断是不是有遮罩的iframe
var iframeBodyCover = document.createElement("iframe"); //创建iframe
iframeBodyCover.id = "__iframeBodyCover";
iframeBodyCover.style.cssText = "position:absolute;top:0;left:0;width:100%; height:100%;background-color:#5A5A5A;";
//参考实例中说要设置 iframe的display为none ,但是自己测试,设置了 display为none 最终的对话框显示不出来,还是同样被ActiveX控件遮挡
//设置iframe的大小的时候最好设置为全屏大小,不然只有在iframe上面的部分的对话框能显示出来,其他地方显示不出来
iframeBodyCover.src = "javascript:false;";
document.body.appendChild(iframeBodyCover);//添加到文档中
}
$("#__iframeBodyCover").zIndex(nowindex + 1); //设置
$("#settingModal").modal('show');
$("#settingModal").zIndex(nowindex + 2);
注意:
1、使用该方法是可以实现想要的功能,但是有些时候可能因为其他地方设置了zindex会影响,具体需要调试才晓得;
为了不麻烦的调试,获取最初的index的时候最好使用ActiveX容器object来获取,并且ActiveX容器object不要设置zindex
2、最后在关掉对话框的时候应该移除上面创建的iframe
$('#settingModal').on('hide.bs.modal', function() {
$("#__iframeBodyCover").remove();
});