layui 的 layer 弹出 iframe 窗口无法关闭怎么解决?

关注者
1
被浏览
2,545
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

在 layui 中,可以使用 layer.open() 方法打开一个包含 iframe 的弹窗。如果无法关闭这个弹窗,可能是因为以下原因:

  1. 弹窗内容与页面不在同一个域

如果弹窗内容和页面不在同一个域,那么由于浏览器的同源策略,可能会出现跨域访问问题。这种情况下,可以通过在 iframe 内嵌入一个关闭按钮,并在按钮的点击事件中调用 parent.layer.close() 方法关闭父窗口。

例如,在 iframe 中可以添加以下代码:

htmlCopy code
<button id="closeBtn">关闭</button>
<script>
  document.getElementById('closeBtn').onclick = function() {
    parent.layer.closeAll();
</script>
  1. 弹窗被其它弹窗覆盖

在 layui 中,如果有多个弹窗打开,那么后面打开的弹窗可能会覆盖前面的弹窗,导致前面的弹窗无法关闭。这种情况下,可以尝试使用 layer.close(index) 方法,指定要关闭的弹窗的索引。

例如,在打开弹窗的时候,可以记录弹窗的索引:

javascriptCopy code
var index = layer.open({