layui 选项卡tab切换事件监听 iframe内容刷新

本文介绍了如何在使用layui框架构建的tab切换页面中,通过修改代码实现数据刷新问题。通过设置`<iframe>`的`location.reload(true)`,解决了多个iframe内容不能实时更新的问题。详细步骤包括引入layui插件、修改`<script>`部分的事件监听和调用reload方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1,效果图

在这里插入图片描述

2,tab切换展示代码(datapage.jsp)

// 注意:要引入layui相关的插件
<body>

	<div class="layui-tab layui-tab-brief" lay-filter="demo">
	    <ul class="layui-tab-title">
	        <li class="layui-this">数据</li>
	        <li>查询</li>
	        <li>查询</li>
	        <li>查询</li>
	    </ul>
	    <div class="layui-tab-content">
	        <div class="layui-tab-item layui-show">
	            <div id="laydateDemo1">
	                <div style="background: #ffffff;">
	                    <iframe id="rptFrame1" runat="server" scrolling="no" frameborder="0" src="/*/topage?id=${id}" style="width: 100%;height: 92%;"></iframe>
	                </div>
	            </div>
	        </div>
	        <div class="layui-tab-item">
	            <div id="laydateDemo">
	                <div style="background: #ffffff;">
	                    <iframe id="rptFrame2" runat="server" scrolling="no" frameborder="0" src="/*/topage?id=${id}" style="width: 100%;height: 92%;"></iframe>
	                </div>
	            </div>
	        </div>
	        <div class="layui-tab-item">
	            <div id="pageDemo3">
	                <div style="background: #ffffff;">
	                    <iframe id="rptFrame3" runat="server" scrolling="no" frameborder="0" src="/*/topage?id=${id}"  style="width: 100%;height: 92%;"></iframe>
	                </div>
	            </div>
	        </div>
	        <div class="layui-tab-item">
	            <div id="pageDemo4">
	                <div style="background: #ffffff;">
	                    <iframe id="rptFrame4" runat="server" scrolling="no" frameborder="0" src="/*/topage?id=${id}"  style="width: 100%;height: 92%;"></iframe>
	                </div>
	            </div>
	        </div>
	    </div>
	</div>
</body>

3,Java代码


 @RequestMapping("topage")
    public String getLookPage(@RequestParam HashMap<String, String> paraMap,Model model){
        ClogEntity entity=clogEntityDao.findById(paraMap.get("id")).get();
        model.addAttribute("costdatatime",entity.getCostdatatime());
        model.addAttribute("yqcode",entity.getYqcode());
        model.addAttribute("faid",entity.getFaid());
        model.addAttribute("taskid",paraMap.get("taskid"));
        
        return "cbhs/**Look";
    }
    

4,**Look.jsp页面


<body>
	<div class="fapz-content">

    <div style="width:70.5%;float:left;display:inline-block;=overflow-x: auto">
        <table id="weidatagrid1" lay-filter="weidatagrid1"></table>
    </div>

    <div id="trees"  style="width:28%;float:left;display:inline-block;margin-left: 0.5%">
        <table id="weidatagrid2" lay-filter="weidatagrid2"  ></table>
    </div>
</div>
</body>


<script>

    var totalrecord=0;
    var h = document.body.clientHeight
    var w = document.body.clientWidth
    var pages;

    layui.config({
        base: '/static/layui-v2.5.6/ext/',// 第三方模块所在目录
        version: 'v1.5.10' // 插件版本号
    }).extend({
        soulTable: 'soulTable/soulTable',
        tableChild: 'soulTable/tableChild',
        tableMerge: 'soulTable/tableMerge',
        tableFilter: 'soulTable/tableFilter',
        excel: 'soulTable/excel',
        treeGrid:'treegrid/treeGrid'
    });

    layui.use(['form','table','soulTable','laypage','layer','tree', 'util','laydate'],function(){
       //入口函数
    })

</script>

5,关于iframe

iframe属性解析:

1.frameborder:是否显示边框,1(yes),0(no)

2.height:框架作为一个普通元素的高度,建议在使用css设置。

3.width:框架作为一个普通元素的宽度,建议使用css设置。

4.name:框架的名称,window.frames[name]时专用的属性。

5.scrolling:框架的是否滚动。yes,no,auto。

6.src:内框架的地址,可以使页面地址,也可以是图片的地址。

7.srcdoc , 用来替代原来HTML body里面的内容。但是IE不支持, 不过也没什么卵用

8.sandbox: 对iframe进行一些列限制,IE10+支持

6,所遇问题

在这个tab切换的过程中,tab选项卡里面的iframe页面内容不能刷新的问题,如图
在这里插入图片描述

根据官网知识点
在这里插入图片描述
在tab切换页面(datapage.jsp)中修改代码为:

document.getElementById(“iframe的id”).contentWindow.location.reload(true)



<script>
    layui.config({
        base: '/static/layui-v2.5.6/ext/',// 第三方模块所在目录
        version: 'v1.5.10' // 插件版本号
    }).extend({
        soulTable: 'soulTable/soulTable',
        tableChild: 'soulTable/tableChild',
        tableMerge: 'soulTable/tableMerge',
        tableFilter: 'soulTable/tableFilter',
        excel: 'soulTable/excel',
        treeGrid:'treegrid/treeGrid',
        dltable: 'treegrid/dltable',
        xmSelect:'xmSelect/xm-select'

    });

    layui.use(['form','table','soulTable','laypage','layer','xmSelect', 'util','laydate','tree','treeGrid','jquery'],function(){
        layui.element.on('tab(demo)', function(){

            document.getElementById("rptFrame2").contentWindow.location.reload(true)
            document.getElementById("rptFrame1").contentWindow.location.reload(true)
            document.getElementById("rptFrame3").contentWindow.location.reload(true)
            document.getElementById("rptFrame4").contentWindow.location.reload(true)

            location.hash = 'demo='+ this.getAttribute('lay-id');
        });
    })
</script>

要实现LayUITab选项卡切换显示对应的页面,可以通过以下步骤: 1. 在HTML中创建Tab选项卡的结构,例如: ``` <div class="layui-tab"> <ul class="layui-tab-title"> <li class="layui-this">Tab1</li> <li>Tab2</li> <li>Tab3</li> </ul> <div class="layui-tab-content"> <div class="layui-tab-item layui-show"> <!-- Tab1对应的页面 --> <iframe src="tab1.html"></iframe> </div> <div class="layui-tab-item"> <!-- Tab2对应的页面 --> <iframe src="tab2.html"></iframe> </div> <div class="layui-tab-item"> <!-- Tab3对应的页面 --> <iframe src="tab3.html"></iframe> </div> </div> </div> ``` 2. 在JavaScript中使用LayUITab模块初始化Tab选项卡,例如: ``` layui.use('element', function(){ var element = layui.element; }); ``` 3. 在JavaScript中监听Tab选项卡切换事件,并根据选项卡的索引切换显示对应的页面,例如: ``` element.on('tab', function(data){ if(data.index === 0){ // 切换Tab1对应的页面 $('iframe[src="tab1.html"]').show().siblings().hide(); }else if(data.index === 1){ // 切换Tab2对应的页面 $('iframe[src="tab2.html"]').show().siblings().hide(); }else if(data.index === 2){ // 切换Tab3对应的页面 $('iframe[src="tab3.html"]').show().siblings().hide(); } }); ``` 其中,`data.index`表示选项卡的索引,从0开始计数。根据需要,可以在每个条件分支中使用AJAX请求获取对应的页面并显示在iframe中。注意,如果页面内容不是同源的,需要在iframe中使用`sandbox`属性或者使用其他跨域请求的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值