反馈已提交

网络繁忙

JS实现根据不同设备显示不同内容

  • 文档创建者:cherishdqy
  • 历史版本:17
  • 最近更新:RosieY 于 2022-10-13
  • 1. 概述

    1.1 问题描述

    当一张报表中内容太多,想根据预览的设备不同显示不同的内容,该怎么实现?如下图所示,模板在移动端和 PC 端预览时,展示内容不同。

    1.2 实现思路

    1)通过 JS 来判断当前是浏览器是 PC 端还是移动端,并将判断结果传回报表。

    2) 根据传回的浏览器结果,利用条件属性的来设置报表的行高,从而达到根据当前设备类型显示对应内容的效果。

    2. 示例

    2.1 模板设计

    新建一个普通报表,设计模板。如下图所示:

    2.2 添加参数控件

    在「参数面板」中添加文本控件 type 和「查询按钮」,并设置文本控件为不可见。如下图所示:

    2020-06-30_13-41-17.png

    2.3 添加事件

    给「文本控件」type 添加一个「初始化后」事件,如下图所示:

    2020-06-30_13-48-26.png

    JavaScript 代码如下:

    var self = this;
    debugger;
    /*获取url中的参数*/
    function GetQueryString(name) {
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var r = window.location.search.substr(1).match(reg);
    if(r != null) return unescape(r[2]);
    return null;
    }
    /*判断navigator是否定义*/
    if(!window.navigator) {
    self.setValue("移动端");
    } else {
    op = GetQueryString("op"); /*获取url中的op参数*/
    /*根据op参数判断是H5还是PC端*/
    var userAgent = window.navigator.userAgent.toLowerCase();
    var isMobile = /mobile|android|iphone|ipad|phone/i.test(userAgent);
    if(op == 'h5' || isMobile) {
    self.setValue("H5");
    } else {
    self.setValue("PC端");
    }
    }

    2.4 设置条件属性

    1)右击 A1:D8 单元格,选择条件属性,添加一个条件属性。属性选择行高:0 毫米;选择公式,内容:nvl(type,"H5") = "H5"

    条件属性内容为根据返回的设备端参数,隐藏一部分内容。如下图所示:

    2020-06-30_13-55-33.png

    2)同理 A10:D14 单元格也要添加同样的条件属性,对应的公式: nvl(type, "H5") = "移动端"

    2.5 效果预览

    保存模板,PC 端预览效果如下图所示:

    2020-06-30_14-17-11.png

    H5 预览效果如下图所示:

    2020-06-30_14-20-38.png

    3. 模板下载

    已完成模板可参考:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\JS\分页预览JS实例\JS实现根据不同设备显示不同内容.frm

    点击下载模板:JS实现根据不同设备显示不同内容.cpt

    附件列表


    主题: 二次开发
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持