layui多重嵌套layui-iframe,子页面会覆盖父页面的解决方法

原因分析

layui使用layer对象的index来防止多窗口id冲突,但是打开iframe窗口时会产生新的layer对象,所以子窗口的layer.index重新从0开始计算,如果子页面打开iframe窗口次数过多,会让layer.index++至父页面相同的值,此时就会产生窗口覆盖。

解决方法

更改代码块1:
找到源码中的下面这段代码,改变获取index的方式。

var Class = function(setings){  
  var that = this;
  //that.index = ++layer.index;//之前的代码
  that.index = "-" + setings.id + (++layer.index);//更改后代码
  that.config = $.extend({}, that.config, ready.config, setings);
  document.body ? that.creat() : setTimeout(function(){
    that.creat();
  }, 30);
};

更改代码块2:上面的更改会导致zIndex失效,需要更改zIndex计算方式

找到源码中的下面这段代码,改变获取zIndex的方式。

//容器
Class.pt.vessel = function(conType, callback){
  var that = this, times = that.index, config = that.config;
  var zIndex = config.zIndex + layer.index//更改后代码
  //config.zIndex + times(这个是之前的代码,由于改变了index的获取方式,导致这种方式不可用)
      , titype = typeof config.title === 'object';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值