1.移动端不支持window.open

移动端是不支持window.open打开小窗口的,会自动转成打开一个新页面,你可以使用第三方插件layer.open实现打开小窗口的功能。

第三方插件layer.open的使用可以参考官方API地址如下
layer.open官方API

分享一个我的代码和效果图:

  	  $('#gyslb').on('click', function(){
  	  var gslbs = $("#gslb").val();
	 layer.config({
	      extend: '../../../layer.css' //自定义定义手机端弹窗皮肤,可以省略
	   });
	 layer.open({
	      type: 2,
	      area: ['90%', '90%'],
	      title: '选择经营品目',
	      shadeClose: true, //点击遮罩关闭
	      //maxmin: true, //最大、最小按钮
	      content: '../../****.html,//小窗口页面的地址
	    });
  });

在这里插入图片描述

2.移动端不支持opener,导致回调函数异常

使用了layer.open后,可以把opener换成parent,即可解决这个问题

3. layer弹出层父子页面事件相互调用方法

原文
父页面

<body>
 
<a data-url="bbbb.html" id="parentIframe">小小提示层</a>
<input id="shuzhi" />
<button class="but_par">父页面</button>
</body>
<script src="../jquery-1.9.1.min.js"></script>
<script src="layer/layer.js"></script>
<script>
$(function(){
$("#parentIframe").click(function(){
var a = $(this).attr("data-url");
layer.open({
  type: 2,
  content: a,
  success: function(layero, index){
    var body = layer.getChildFrame('body', index);//获取子页面内容
    var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();
   body.find("#transmit").click();//执行子页面的方法
    body.find('input').val('Hi,我是从父页来的')
    $(".but_par").click(function(){
    alert(222);
    })
  }
}); 
})
})

子页面

<body>
<input id="name" value="不满意" />
<button id="transmit">给父层传值</button>
</div>
</body>
<script>
$(function(){
$(document).on("click","#transmit").click(function(){
parent.$("#shuzhi").val($("#name").val());
parent.location.reload(); 刷新父页面
//关闭layer弹出层
var index = parent.layer.getFrameIndex(window.name); //获取窗口索引
parent.layer.close(index);
})
window.parent.$(".but_par").click();//执行父页面的事件
})
</script>
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐