// 数据类型深度检查
var typefor = function(obj, type) {
var oType = {
'[object Boolean]': 'Boolean',
'[object Number]': 'Number',
'[object String]': 'String',
'[object Function]': 'Function',
'[object Array]': 'Array',
'[object Date]': 'Date',
'[object RegExp]': 'RegExp',
'[object Object]': 'Object'
},
ret = obj == null ? String(obj) : oType[Object.prototype.toString.call(obj)] || 'Unknown';
return type ? type.test(ret) : ret;
};
// 数据兼容处理 更换JS对象索引KEY值 添加映射字段
function preDataProcessor(res){
// 添加映射字段 预处理后台数据兼容前端运行代码
// 映射对象
var transformObjConfig = {
"Live_control": {
"c": "resultcode", // 原来的字段 resultcode,新字段 c
"m": "msg", // 原来的字段 msg,新字段 m
"d": {
"s": "status", // 可以观看直播状态
"t": "status_text", // 直播状态文字 直播中
"c": "t_class", // 前端状态文案的样式,值:t-playing t_wait
"d": "curr_date", // 是否是当天,1是,0不是,只有当天将要开播的直播间才显示倒计时
"m": "dec_time", // 当前时间距直播开始时间的差,单位秒
"p": "play_url", // 直播视频播放链接
"f": "flv_url", // 直播视频播放链接(flv协议)
"a": "audio_url", // 直播音频播放链接
"af": "audio_url_flv", // audio_url_flv直播音频播放链接
"w": "switch", // 是否可以切换硬盘,1是,0反之。
"o": "options" // 点播回放防盗链参数以及点播ID,可回放时返回字段
},
"a":"Live_control" // action操作类型
}
}, transformObj = null;
// 映射赋值
function resetKey(data,config){
console.info('resetKey--->',data,config)
for(var k in config){
if(k != 'ownerProperty' && data.hasOwnProperty(k) && config.hasOwnProperty(k) ){
if(!typefor(config[k], /Object/)){
data[config[k]] = data[k];
}else{
data[config[k]['ownerProperty']] = resetKey(data[k],config[k]);
}
}
}
return data;
}
// 找配置对象
for(var k in transformObjConfig){
if(res.hasOwnProperty('a') && res['a'] === k ){
// 处理对应数据
transformObj = transformObjConfig[k];
for(var i in transformObj){
if(res.hasOwnProperty(i) && transformObj.hasOwnProperty(i) ){
if(typefor(transformObj[i], /Object/)){
res[transformObj[i]['ownerProperty']] = resetKey(res[i],transformObj[i]);
}else{
res[transformObj[i]] = res[i];
}
}
}
}
}
return res;
},
// 测试
var abc = preDataProcessor({
a: 'Live_login',
c: 0,
m: '测试',
d: {
i: 22,
j:[111,222,555],
s: {
a : 555
}
}
})
console.info(abc)
CSS:
.container {
display: table; /*主要代码*/
*position: relative; /*for ie67*/
background-color: #FF5E53; width: 800px; height: 200px; overflow: hidden; margin: 0 auto;
}
.content {
vertical-align: middle; display: table-cell; text-align: center; /*主要代码*/
*position: absolute; *top: 50%; *left: 50%; /*for ie67*/
}
.center {
display: inline-block; /*主要代码*/
*display: inline; zoom: 1; *position: relative; *top: -50%; *left: -50%; /*for ie67*/
padding: 10px; border: 1px solid #fff;
}
HTML:
<div class="container">
<div class="content">
<div class="center">
啦啦啦,啦啦啦,我是卖报的小行家....<br>dsdADSsdSD
</div>
</div>
</div>
Echart 具体参考:
https://echarts.apache.org/examples/zh/editor.html?c=line-stack
https://echarts.apache.org/zh/download.html
// 替换或追加参数
// orgUrl 地址
// paramName 参数名
// replaceWith 参数值
var replaceParamVal = function(orgUrl,paramName,replaceWith){
var reg = new RegExp('('+ paramName +'=)([^&]*)','gi'),
has = orgUrl.indexOf(paramName);
if(has<=0){
// 不存在改参数
var hasQuestion = orgUrl.indexOf("?");
if(hasQuestion>0){
orgUrl = orgUrl+"&" +(paramName +'=' +replaceWith);
}else{
orgUrl = orgUrl+"?" +(paramName +'=' +replaceWith);
}
}else{
// 存在该参数
orgUrl = orgUrl.replace(reg,paramName+'='+replaceWith);
}
return orgUrl;
};
// 图片上传
$("#imghand").on('change',function(e) {
var me = $(this).parent();
var handId = $(this).attr("id");
var files = e.target.files;
files && upLoadMethod(files,handId,me)
})
function upLoadMethod(file, domId, box) {
if(!file[0]){
return false;
}
var formData = new FormData();
formData.append('file', file[0]);
t.http({
cache: false, //上传文件不需要缓存
type: "POST",
url: "",
data: formData,
dataType:"json",
timeout:1000*5,
contentType: false, //需设置为false。因为是FormData对象,且已经声明了属性enctype="multipart/form-data"
processData: false, //需设置为false。因为data值是FormData对象,不需要对数据做处理
success: function (ret) {
// 略……
},
error: function (err) {
}
});
}
使用案例代码,请在上方下载