vue + Element-UI下iframe子页面弹窗蒙层只能遮罩子页面问题解决

这篇具有很好参考价值的文章主要介绍了vue + Element-UI下iframe子页面弹窗蒙层只能遮罩子页面问题解决。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

发现网络上使用element-ui+vue做后台页面,基本要搭建vue脚手架,最近有个需求,就是使用element-ui+vue做一套静态页面,主区域使用firame,点击主菜单,可以进入子页面。

vue + Element-UI下iframe子页面弹窗蒙层只能遮罩子页面问题解决

问题出现了,新增、修改、删除的弹窗,只能在iframe区域显示:

vue + Element-UI下iframe子页面弹窗蒙层只能遮罩子页面问题解决

如何解决这个问题呢?果断各种查资料,希望CV大法可以解决,不过所有的解决方案都是在vue脚手架里面搭建项目,这又不符合目前的需求。

于是开始思考:

1.既然列表页可以使用iframe,那新增和修改是不是也可以使用iframe去解决?

2.如果弹窗使用iframe,那怎么才能让子页面唤醒父页面的弹窗呢?

3.每个子页面的数据不同,那么弹窗的大小也有不同,能否让每个页面唤起的弹窗大小可以不同呢(事实证明是可行的,在子页面将弹窗宽高传过去就可以了)?

想到这里,就开始行动!

主页面弹窗标签:

<!--dislogName:弹窗名称,可以从子页面传入,比如“新增部门”-->
<!--dialogVisible:弹窗状态,子页面调用父页面方法的时候,进行唤醒-->
<!--:width=big:弹窗宽度,单位百分比,子页面直接传参-->
<el-dialog :title=dislogName :visible.sync="dialogVisible" :width=big :before-close="handleClose">
      <!--:height=height:弹窗高度,单位像素,子页面直接传参-->
      <iframe :src="dialogUrl" width=100% :height=height frameborder="0" id="iframeUpdate"> 
      </iframe>
</el-dialog>

主页面vue数据及方法(注释写的十分清楚了)

<script>
    //这里务必要有个名字,将来子页面调方法需要使用
    var index = new Vue({
        el: '#app', 
        //数据部分
        data(){
            return{
                // 新增修改公用弹窗状态
                dialogVisible: false,
                //新增修改公用弹窗地址
                dialogUrl: ' ',
                //新增修改公用弹窗名称
                dislogName: '',
                //新增修改公共弹窗大小,big-宽,height-高
                big: '',
                height: '',
            }
        },
        methods{
                //打开新增修改公共弹窗的方法(在子页面中调用)
                dialog(url, name, big, height) {
                    //定义iframe标签位置
                    this.dialogUrl = url
                    //定义弹窗名字
                    this.dislogName = name
                    //定义弹窗宽度
                    this.big = big
                    //定义弹窗高度
                    this.height = height
                    //打开弹窗
                    this.dialogVisible = true
                },
        }
    })

</script>

接下来是子页面,从列表页面的按钮绑定方法,直接调用父页面打开弹窗的方法:

  1. 这里新增和修改页面使用了同一个,新增传入module为add,修改的话直接传入id
  2. 有一个问题需要注意,修改页面每次需要强行刷新一次,否则回显数据会出问题,总是带着上次回显的数据提交
  3. 直接使用parent.index.dialog调用函数传参即可
<script>
    new Vue({
        el:"#xxx",
        methods{
            //打开新增修改弹窗的方法
            addDislog(module) {
                if (module === "add") {
                    //参数1:弹窗内引用的iframe地址
                    //参数2:弹窗名字
                    //参数3:弹窗宽度,根据页面内容定义
                    //参数4:弹窗高度
                    parent.index.dialog('pages/xxxx/add.html', '新增管理员用户', '40%', '400px');
                    //刷新修改页面(避免缓存数据导致修改回显失败)
                    parent.index.updateReload();
                } else {
                    //参数1:弹窗内引用的iframe地址
                    //参数2:弹窗名字
                    //参数3:弹窗宽度,根据页面内容定义
                    //参数4:弹窗高度
                    parent.index.dialog('pages/xxxx/add.html?id=' + module, '编辑管理员用户', '40%', '400px');
                    //刷新修改页面(避免缓存数据导致修改回显失败)
                    parent.index.updateReload();
                }
            },
        }
    })

</script>

最后上效果图,大功告成!

vue + Element-UI下iframe子页面弹窗蒙层只能遮罩子页面问题解决文章来源地址https://www.toymoban.com/news/detail-413628.html

到了这里,关于vue + Element-UI下iframe子页面弹窗蒙层只能遮罩子页面问题解决的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue2+element-ui后台管理系统(静态页面)

    node:https://nodejs.org/en/ git:https://git-scm.com/ vue:https://v2.cn.vuejs.org/v2/guide/installation.html element-ui:https://element.eleme.cn/#/zh-CN/component/installation 项目所需:https://pan.baidu.com/s/1ua0jp9YCtPH6slE49HDUBw 提取码:kkkk 在node和vue都调试、配置好的情况下使用vscode 在终端中输入命令 npm i -g @vue

    2024年02月06日
    浏览(58)
  • vue element-ui分页插件 始终保持在页面底部样式

    最近在写前端页面的时候,有一个小需求就是保证分页插件一直保持在底部,表单数据增多的时候出现竖向的滚动条。 直接上代码 样式 效果展示

    2024年02月11日
    浏览(50)
  • Vue项目element-ui弹窗组件el-dialog、el-drawer,阻止点击遮罩层关闭

    效果图: 我们只需要设置这两个 属性 append-to-body :close-on-click-modal=“false” 注意 : 这里的close-on-click-modal属性前需要写入 :

    2024年02月12日
    浏览(64)
  • 菜鸟级:Vue Element-UI 前端 + Flask 后端 的登录页面验证码

    这里记录登录页面验证码的做法,采取的是前后端分离的做法,前端用Vue,后端用Flask 首先是GIF效果图: 后端返回的数据结构(base64字符串,response.data.img):   1、Vue前端页面基本采用Ruoyi Ui里面的登录页面代码,里面的一些方法进行重写; 首先是单个vue文件里网页内容

    2023年04月08日
    浏览(58)
  • vue element-ui实现获取短信验证码 ,60秒倒计时及页面

    cc废话不多说先上效果图    vue页面布局 css样式  逻辑js

    2024年02月08日
    浏览(63)
  • FLASK+VUE--前后端分离(三)- VUE+Element-UI搭建登陆页面且能够正常登陆

    FLASK+VUE–前后端分离(一)- Flask基础讲解之路由、视图函数及代码实现 FLASK+VUE–前后端分离(二)- VUE基础安装及项目的简易介绍 FLASK+VUE–前后端分离(三)- VUE+Element-UI搭建登陆页面且能够正常登陆 FLASK+VUE–前后端分离(四)- VUE+Element-UI简单搭建主页布局 FLASK+VUE–前后端

    2023年04月15日
    浏览(46)
  • 基于Element-ui 表单弹窗列表选择封装

    不知道怎么描述这个东西了。。el-select下拉框大家都知道,但是下拉框只能选择一个,而且如果数据太多的话也不太容易选择,所以这里就是封装了组件包含对应的弹窗,就是能实现多选,而且列表也是分页展示的,选择完之后将对应的名称展示在文本框中,传给后端对应的

    2024年02月11日
    浏览(42)
  • element-ui dialog弹窗 设置点击空白处不关闭

    根据官网提供方法 场景:vue实现的网站有两个弹窗同时出现时,关闭报警,批量进度条弹窗也关闭了, 1、每一个页面都有可能出现的报警弹窗, 2、页面a批量操控硬件添加操作的进度条弹窗 开始以为是因为点击报警弹窗,相当于点击modal(空白处)所以导致关闭报警弹窗的同

    2024年02月09日
    浏览(38)
  • Vue 当页面进入全屏状态时element-ui的el-select下拉菜单不显示问题

    在前两天进行页面全屏时,一切都还好好的,可当使用element-ui中的el-select时,下拉菜单却怎么也显示不出来,但只要退出全屏状态,立马就好。 非全屏时:  全屏时: 开始我以为是层级问题,所以给el-select的下拉菜单加z-index,却发现加到多大都没用。 后来去官方文档里找

    2024年01月17日
    浏览(75)
  • element-ui 弹窗里面嵌套弹窗,解决第二个弹窗被遮罩层掩盖无法显示的问题

    当我们在 element-ui 中使用弹窗嵌套弹窗时,会出现第二个弹窗打开时被一个遮罩层挡着,就像下面这样: 下面提供两种解决方案 : 一、第一种方案 我们查询element-ui 官网可以发现 el-dialog 有这样几个属性:  具体使用就是在第一个弹窗中设置 :modal-append-to-body=\\\"false\\\"  和 :ap

    2024年02月11日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包