帆软用工具测试超链接打开弹窗(iframe嵌套),解决js传参带中文传递有乱码问题

1、新建超链接

随意点击一个单元格右击,选择 超级链接 

2、在弹出的窗口中选择JavaScript脚本 如图:

其中红框框出的是几个要点   ,左边的就不讲了,右上角的参数cc是设置了公式remoteServletURL  能自动获取报表路径 如图:

右下角的js代码是设置一个iframe弹窗,代码如下:

1 var url =FR.cjkEncode("?formlet=indicatorDetailedTypeFirst.frm&companycode=0102010101&intermediarycode=0201072911&name=赵振强");
2 var iframe = $("<iframe id='inp' name='inp' width='100%' height='100%' scrolling='yes' frameborder='0'>"); // 对话框内 iframe 参数的命名,默认宽高占比是 100%,可向下滚动    
3 iframe.attr("src", cc+url);
4 //iframe.attr("src", cc+"?formlet=indicatorDetailedTypeFirst.frm&name=赵振强"); // 给 iframe 添加 src 属性  
5 var o = {    
6 width : 700,  //对话框宽度  
7 height: 500  //对话框高度  
8 };    
9 FR.showDialog("添加", o.width, o.height, iframe,o);//弹出对话框

其中需要注意的是如果参数中有 中文需要将url包裹在编码FR.cjkEncode()里,否则传参中的中文将会是乱码:如图

需要注意的是:如果放到工程js中会报FR没定义,我找了半天没找到怎么引入帆软的js,网上百度看到有人贴出了cjkEncode的源码,直接加到js方法中调用即可

$.GPageModule([""],function(){
    var modelType = "indicatorDetailedTypeFirst.frm";
    var companycode = $("#companycode").val();
    var intermediarycode =$("#intermediarycode").val();
    var name =$("#name").val();
    var reportURL = cjkEncodeNew(GlobalParam.context+"/ReportServer?formlet=erm/sj/"+modelType+"&companycode="+companycode+"&intermediarycode="+intermediarycode+"&name="+name);
    $("#viewIndicatorDetailedType").attr("src",reportURL);
});

function cjkEncodeNew(text) {
    if (text == null) {
        return "";
    }
    var newText = "";
    for (var i = 0; i < text.length; i++) {
        var code = text.charCodeAt (i);
        if (code >= 128 || code == 91 || code == 93) {//91 is "[", 93 is "]".
            newText += "[" + code.toString(16) + "]";
        } else {
            newText += text.charAt(i);
        }
    }
    return newText;
}

 原创总结。

原文地址:https://www.cnblogs.com/baby-dragon/p/11230241.html