公共方法-functions.js

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34664239/article/details/89014583
//深拷贝
function objDeepCopy(source) {
    var sourceCopy = source instanceof Array ? [] : {};
    for (var item in source) {
        sourceCopy[item] = typeof source[item] === 'object' ? objDeepCopy(source[item]) : source[item];
    }
    return sourceCopy;
}


//原生js获取元素属性
function getStyle(ele,attr){
    return  window.getComputedStyle ?  window.getComputedStyle(ele, null)[attr] : ele.currentStyle[attr];
}
/*全局对象*/
var gObj = {};
gObj.flag = true;
/*签名*/
// 调用函数获取当前设备的cookie标识
gObj.cookie_val = getCookie("identity_id");
gObj.timeDifference = '';
function getNowTime() {
	var nowTime = gObj.timeDifference + new Date().getTime();
	return 'clienttimestamp=' + nowTime + "&clientsign=" + md5s("201705&" + nowTime) + "&clientver=201705&clientappversion=3.3.5";
}
gObj.parameterObj = {
	clientappkey: 'Liangsanfenzhong010',
	clientchannel: '00000000000000000000000000000003',
	clientimei: gObj.cookie_val,
	clientos: 'web',
	clientosversion: 'web',
	clientdevicetoken: 'web',
	clientlat: '0.0',
	clientlng: '0.0',
	clientnetworktype: 'WIFI',
	clientphone: '00000000000',
	clientscreenwidth: window.screen.width,
	clientscreenheight: window.screen.height,
	clientapptype: '3'
};
/*获取当前设备的cookie标识*/
function getCookie(cookie_name) {
	var allcookies = document.cookie;
	var cookie_pos = allcookies.indexOf(cookie_name); //索引的长度
	if(cookie_pos != -1) {
		cookie_pos += cookie_name.length + 1; //这里容易出问题,所以请大家参考的时候自己好好研究一下
		var cookie_end = allcookies.indexOf(";", cookie_pos);
		if(cookie_end == -1) {
			cookie_end = allcookies.length;
		}
		var value = unescape(allcookies.substring(cookie_pos, cookie_end)); //这里就可以得到你想要的cookie的值了。。。
	}
	return value;
}
/*获取时间差的公共方法*/
//function timeCommonFuc(fn){
//	$.ajax({
//		type: "get",
//		url: "/app/fenzhongkeji/sysMessage/getServerTime.json",
//		async: true,
//		dataType: 'json',
//		success: function(dataBack) {
//			if(dataBack.status != 1) {
//				$('#preloader .errMessage span').html(dataBack.message).fadeIn(800);
//				return;
//			}
//			var serverTime = dataBack.data.serverTime;
//			var nowTime = new Date().getTime();
//			gObj.timeDifference = serverTime - nowTime;
//			if(fn) fn();
//		}
//	})
//}
/*2018-4-26获取验证码方法封装*/
/*
 * 封装验证码倒计时对象
 * 调用规则,必须是input type="button"元素来调用
 * 例如:
 *  <input type="button" class="get_code" value="获取验证码"></input>
 *  var newCode = new GetCode($('.get_code').get(0));
 *	newCode.sendCode();
 * */
function GetCode (element){
    this._init_(element);
}
GetCode.prototype = {
    constructor : GetCode,
    _init_ : function(element) {
        this.clock = '';
		this.nums = 60;
		this.btn = element;
    },
    sendCode: function (){
		this.btn.disabled = true; //将按钮置为不可点击
		this.btn.value = this.nums + '秒后可重发';
		var that = this
		this.clock = setInterval(this.doLoop(that), 1000); //一秒执行一次
	},
	/*需要注意的地方*/
    doLoop: function(that){
    	var fuc = function(){
    		that.nums--;
			if(that.nums > 0) {
				that.btn.value = that.nums + '秒后可重发';
			} else {
				clearInterval(that.clock); //清除js定时器
				that.btn.disabled = false;
				that.btn.value = '获取验证码';
				that.nums = 60; //重置时间
			}
    	}
    	return fuc;	
	}
}

//判断访问终端
var browser = {
	versions: function() {
		var u = navigator.userAgent,
			app = navigator.appVersion;
		return {
			trident: u.indexOf('Trident') > -1, //IE内核
			presto: u.indexOf('Presto') > -1, //opera内核
			webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
			gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
			mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
			ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
			android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1, //android终端
			iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
			iPad: u.indexOf('iPad') > -1, //是否iPad
			webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
			weixin: u.indexOf('MicroMessenger') > -1, //是否微信 (2015-01-22新增)
			qq: u.match(/\sQQ/i) == "qq", //是否QQ
			weibo: u.match(/WeiBo/i) == "weibo", //是否微博
		};
	}(),
	language: (navigator.browserLanguage || navigator.language).toLowerCase()
};

/*判断是否是微博*/
var isWeibo = false;
gObj.isWeibo = false;
if(browser.versions.mobile) { //判断是否是移动设备打开。browser代码在下面
	var ua = navigator.userAgent.toLowerCase(); //获取判断用的对象
	if(ua.match(/MicroMessenger/i) == "micromessenger") {
		//在微信中打开
	}
	if(ua.match(/WeiBo/i) == "weibo") {
		isWeibo = true;
		gObj.isWeibo = true;
	}
	if(ua.match(/QQ/i) == "qq") {
		//在QQ空间打开
	}
	if(browser.versions.ios) {
		//是否在IOS浏览器打开
	}
	if(browser.versions.android) {
		//是否在安卓浏览器打开
	}
}
//统计字符串中特定字符串的个数
function getStrCount(scrstr, armstr) { //scrstr 源字符串 armstr 特殊字符
	var count = 0;
	while(scrstr.indexOf(armstr) >= 1) {
		scrstr = scrstr.replace(armstr, "")
		count++;
	}
	return count;
}

/*=======================================banner条 Start=======================================*/
function bannerSlider(){
	//头部轮播图
	var headerURL = '/aiyaya/app/system/ad/advertise.json?' + getNowTime();
	$.ajax({
		type: "post",
		url: headerURL,
		async: true,
		data: gObj.parameterObj,
		dataType: 'json',
		success: function(res) {
			console.log(res)
			var status = res.status;
			var str = '';
			if(status == 1) {
				var dataList = res.data;
				for(var i = 0; i < dataList.length; i++) {
					if(dataList[i].adstyle == 1){
						str += '<li class="fl logoLi"><a href="#"><img class="fl" src="' + dataList[i].adpicture + '" alt="" /><span class="playIcon"></span></a><p class="fl"><span class="logo">'+dataList[i].adtitle+'</span></br><span class="txt">'+dataList[i].adcontents+'</span></p><button class="fr">打开</button></li>'
					}else{
						str += '<li class="fl"><a href="#"><img class="fl" src="' + dataList[i].adpicture + '" alt="" /><span class="playIcon"></span></a><p class="fl txt">' + dataList[i].adtitle + '</p><button class="fr">打开</button></li>'
					}
				}
				$('.banner').html('<ul class="img">' + str + '</ul><ul class="num"></ul>');
				/*var data = {
					dataList: dataList
				};
				var html = template('bannerTemp', data);
				$('.banner .img').html(html);*/
				imgscrool('#header');
				//顶部点击跳转APP
				$('.img li').click(function() {
					if(gObj.isWeibo) {
						window.location.href = "http://a.app.qq.com/o/simple.jsp?pkgname=com.fengzhongkeji";
					} else {
						window.location.href = gObj.jumpAppPath;
					}
				})
			}
		}
	}); //头部结束
}
/*2018-3-1*/
/*鑾峰彇褰撳墠灞忓箷鐨勫楂�*/
function getViewportSize () {
    return {
        width: window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth,
        height:  document.documentElement.clientHeight || document.body.clientHeight || window.innerHeight 
    };
}
function isSmallVideo(){
 	if(browser.versions.android && browser.versions.weixin){
 		return true;
 	}else{
 		return false;
 	}
}
/*=======================================banner条 End=======================================*/
/*=======================================分享Start=======================================*/
function shareWX(shareObj){
	shareObj.desc = '哎呀鸭-儿童短视频平台';// 分享副标题
	var metaStr = '<meta name="description" itemprop="description" content="哎呀鸭-儿童短视频平台"/>' ;
	$('head').append(metaStr);				
	/*微信分享*/
	var url = encodeURIComponent(location.href.split('#')[0]);
	gObj.parameterObj.url = url;
	$.ajax({
		type: "post",
		url: "/aiyaya/app/fenzhongkeji/HttpXmlClient/getWeiXin.json?" + getNowTime(),
		data: gObj.parameterObj,
		dataType: 'json',
		success: function(data) {
			console.log(data);
			data = data.data;
			/*微信接口*/
			var appId = data.appId;
			var timestamp = data.timestamp;
			var nonceStr = data.nonceStr;
			var signature = data.signature;
			var obj = {
				debug: true, // 开启调试模式
				appId: appId, // 必填,公众号的唯一标识
				timestamp: timestamp, // 必填,生成签名的时间戳
				nonceStr: nonceStr, // 必填,生成签名的随机串
				signature: signature, // 必填,签名,见附录1
				jsApiList: ['onMenuShareTimeline', 'onMenuShareAppMessage', 'onMenuShareQQ', 'onMenuShareWeibo', 'onMenuShareQZone','updateAppMessageShareData','updateTimelineShareData']
			}
			/*权限验证配置*/
			wx.config(obj);
			if(browser.versions.mobile) { //判断是否是移动设备打开。browser代码在下面
				var ua = navigator.userAgent.toLowerCase(); //获取判断用的对象
				if(ua.match(/MicroMessenger/i) == "micromessenger") {
					wx.ready(function() {
						WeixinJSBridge.call('showOptionMenu');
						/*加载完数据,能分享的时候隐藏加载层*/
						$("#preloader").hide();
						/*1-分享给朋友*/
						wx.onMenuShareAppMessage(shareObj);
						/*2-分享给朋友圈*/
						wx.onMenuShareTimeline(shareObj);
						/*3-分享到QQ好友*/
						wx.onMenuShareQQ(shareObj);
						/*4-分享到QQ空间*/
						wx.onMenuShareQZone(shareObj);
						/*5-分享到腾讯微博*/
						wx.onMenuShareWeibo(shareObj);
						wx.updateAppMessageShareData(shareObj);
						wx.updateTimelineShareData(shareObj);
					});
					wx.error(function(res) {});
				} else {
					/*加载完数据,能分享的时候隐藏加载层*/
					$("#preloader").hide();
				}
			} else {
				$("#preloader").hide();
			}
		}
	});
}
/*=======================================分享End=======================================*/
/*=======================================linkedMe简单集成 start=======================================*/
function linkedMeFnc(){
	var dataObj = {};
	linkedme.init("adb46621c86d85be95641445092af93c", {
		type: "live"
	}, null);
	dataObj.type = "live";
	linkedme.link(dataObj, function(err, data) {
		if(err) {
			return err;
		} else {
			gObj.jumpAppPath = data.url;
		}
	}, false);
}

/*=======================================linkedMe简单集成 End=======================================*/

/**
 * Created by Administrator on 2016/11/19.
 */
/*获取查询字符串对象*/
function getUrlAttribute(url) {
	var url = url.replace('?', '').trim()
	if(url.length > 0) {
		var args = new Object();
		var pairs = url.split("&");
		for(var i = 0; i < pairs.length; i++) {
			var pos = pairs[i].indexOf("=");
			if(pos == -1)
				continue;
			var argname = pairs[i].substring(0, pos);
			var value = pairs[i].substring(pos + 1);
			value = decodeURIComponent(value);
			args[argname] = value;
		}
		//根据键名获取值
		return args;
	}
}
//删除url指定名称的参数,返回新的url
function removeUrlAttribute(url, name1, name2) {
	var str1 = url.split('?')[0] + '?';
	var url = url.split('?')[1]
	var str = '';
	if(url.length > 0) {
		var args = new Object();
		var pairs = url.split("&");
		for(var i = 0; i < pairs.length; i++) {
			var pos = pairs[i].indexOf("=");
			if(pos == -1)
				continue;
			var argname = pairs[i].substring(0, pos);
			var value = pairs[i].substring(pos + 1);
			value = decodeURIComponent(value);
			if(argname == name1 || argname == name2) {
				continue;
			}
			str += argname + '=' + value + '&';
		}
		return str1 + str.substr(0, str.length - 1);
	}
}
/*验证码倒计时*/
var clock = '';
var nums = 60;
var btn;

function sendCode(thisBtn) {
	btn = thisBtn;
	btn.disabled = true; //将按钮置为不可点击
	btn.value = nums + '秒后可重发';
	clock = setInterval(doLoop, 1000); //一秒执行一次
}

function doLoop() {
	nums--;
	if(nums > 0) {
		btn.value = nums + '秒后可重发';
	} else {
		clearInterval(clock); //清除js定时器
		btn.disabled = false;
		btn.value = '获取验证码';
		nums = 60; //重置时间
	}
}
/*==================================时间函数START============================================*/
//设置时间格式
var minute = 1000 * 60;
var hour = minute * 60;
var day = hour * 24;
var halfamonth = day * 15;
var month = day * 30;

function getDateDiff(dateTimeStamp) {
	var now = new Date().getTime();
	var diffValue = now - dateTimeStamp;
	var monthC = diffValue / month;
	var weekC = diffValue / (7 * day);
	var dayC = diffValue / day;
	var hourC = diffValue / hour;
	var minC = diffValue / minute;
	if(monthC >= 1) {
		result = "发表于" + parseInt(monthC) + "个月前";
	} else if(weekC >= 1) {

		result = "发表于" + parseInt(weekC) + "周前";
	} else if(dayC >= 1) {
		result = "发表于" + parseInt(dayC) + "天前";
	} else if(hourC >= 1) {
		result = "发表于" + parseInt(hourC) + "个小时前";
	} else if(minC >= 1) {
		result = "发表于" + parseInt(minC) + "分钟前";
	} else
		result = "刚刚发表";
	return result;
};

//时间格式封装,timeStamp:时间戳 |nowData:现在时间
function TimeLayout(timeStamp, nowDate, timeShow, publishMonth, publishYear, publishDate, publishHours, publishMinutes) {
	if(timeStamp < 7200000) {
		return timeShow = "1小时以前";
	} else if(timeStamp >= 7200000 && timeStamp < 86400000) {
		return timeShow = parseInt(timeStamp / 1000 / 60 / 60);

	} else if(timeStamp > 86400000 && nowDate == publishYear) {
		if(publishMonth < 10) {
			publishMonth = '0' + publishMonth
		};
		if(publishDate < 10) {
			publishDate = '0' + publishDate
		};
		if(publishHours < 10) {
			publishHours = '0' + publishHours
		};
		if(publishMinutes < 10) {
			publishMinutes = '0' + publishMinutes
		};
		return timeShow = publishMonth + '-' + publishDate + "&nbsp" + publishHours + ":" + publishMinutes;

	} else if(timeStamp > 86400000 && nowDate != publishYear) {
		if(publishMonth < 10) {
			publishMonth = '0' + publishMonth
		};
		if(publishDate < 10) {
			publishDate = '0' + publishDate
		};
		if(publishHours < 10) {
			publishHours = '0' + publishHours
		};
		if(publishMinutes < 10) {
			publishMinutes = '0' + publishMinutes
		};
		return timeShow = publishYear + '-' + publishMonth + '-' + publishDate;

	};
};
//时间格式封装,timeStamp:时间戳 |nowData:现在时间
function TimeLayoutnew(timeStamp, nowDate, timeShow, publishMonth, publishYear, publishDate, publishHours, publishMinutes) {
	var year = new Date().getFullYear();
	if(publishMonth < 10) {
		publishMonth = '0' + publishMonth
	};
	if(publishDate < 10) {
		publishDate = '0' + publishDate
	};
	if(publishHours < 10) {
		publishHours = '0' + publishHours
	};
	if(publishMinutes < 10) {
		publishMinutes = '0' + publishMinutes
	};
	if(Number(year) > Number(publishYear)) {
		return timeShow = publishYear + '-' + publishMonth + '-' + publishDate;
	} else {
		return timeShow = publishMonth + '-' + publishDate;
	}
}
//设置时间样式——播放器用
function add0(m) {
	return m < 10 ? '0' + m : m;
}

function format(shijianchuo) {
	var time = new Date(shijianchuo);
	var y = time.getFullYear();
	var m = time.getMonth() + 1;
	var d = time.getDate();
	var h = time.getHours();
	var mm = time.getMinutes();
	var s = time.getSeconds();
	return y + '-' + add0(m) + '-' + add0(d)
}

//获取当前时间戳——yymmhhddss
function getNowFormatDate() {
	var date = new Date();
	var month = date.getMonth() + 1;
	var strDate = date.getDate();
	if(month >= 1 && month <= 9) {
		month = "0" + month;
	}
	if(strDate >= 0 && strDate <= 9) {
		strDate = "0" + strDate;
	}
	var currentdate = date.getFullYear() + month + strDate + date.getHours() + date.getMinutes() + date.getSeconds();
	return currentdate;
}
//时间格式封装结束
/*==================================时间函数START============================================*/

/**
 * //下方更多视频和朋友圈转疯了列表
 */

function toRefurbish() {
	var oRefurbish = false; // 中间值 确认刷新
	var scrollT = 0; //

	document.addEventListener('touchstart', function(ev) {
		var oEvent = ev || event;
		var touch = oEvent.touches[0]; //获取第触点
		var x = Number(touch.clientX); //页面触点X坐标
		var y = Number(touch.clientY); //页面触点Y坐标
		var startX = x;
		document.addEventListener('touchmove', function(ev) {
			var oEvent = ev || event;
			var touch = oEvent.touches[0]; //获取第触点
			var x = Number(touch.clientX); //页面触点X坐标
			var y = Number(touch.clientY); //页面触点Y坐标
			var EndX = x;
			document.addEventListener('touchend', function(ev) {
				var oEvent = ev || event;
				if(EndX - startX >= 100 && oRefurbish == false && scrollT == 0) {
					oRefurbish = true;
					window.location.reload();
				}
			}, false);
		}, false);
	}, false)
}

/**
 * 电视剧列表
 * [[1,2...15],[16,17,...30]]
 */
function NumOfEpisode(num) {
	var tmp = 0; //15
	var tol = 0; //逢15进1
	var arr = new Array(); //每次进1push到数组中
	var iii = new Array();
	for(var i = 0; i < num; i++) {
		iii.push(i + 1);
		tmp++;
		if(tmp == 15) {
			tmp = 0;
			tol++;
			arr.push(iii);
			var iii = new Array();
		}
	}
	if(iii.length > 0) {
		arr.push(iii);
	}
	return arr;
}

/*md5加密十次*/
function md5s(hash) {
	for(var i = 0; i < 10; i++) {
		hash = hex_md5(hash);
	}
	return hash;
}
/*预加载图片的方法*/
var loadImg = function(src, callback) {
	var oScript = new Image();
	oScript.src = src;
	oScript.onload = function() {
		if(typeof(callback) == "function") {
			callback();
		} else {
			return
		}
	}
}
/*=====================================轮播图START================================================*/
/*注册滑动事件*/
function ul_scroll(ulDom) {
	var startX = 0;
	var moveX = 0;
	var distanceX = 0;

	/*加移动限制*/
	var ulWidth = ulDom.offsetWidth;
	var bodyWidth = document.body.offsetWidth;

	// 移动的 范围
	var maxX = 0;
	var minX = bodyWidth - ulWidth;
	// 定义 移动的 偏差值
	var xDelay = 100;

	ulDom.addEventListener('touchstart', function(e) {
		moveX = 0;
		//记录起始值
		startX = e.touches[0].clientX;
		// 关闭 过渡效果
		ulDom.style.transition = 'none';
	})
	ulDom.addEventListener('touchmove', function(e) {
		//记录移动值
		moveX = e.touches[0].clientX - startX;

		// 为了保证 正好是在 范围内移动 需要对移动的距离进行修正

		if((moveX + distanceX) < (maxX + xDelay) && (moveX + distanceX) > (minX - xDelay)) {
			// 移动
			ulDom.style.transform = 'translateX(' + (moveX + distanceX) + 'px)';
		}
	})
	ulDom.addEventListener('touchend', function(e) {
		distanceX = distanceX + moveX;
		// 判断 当前的这个 distanceY 是否 超出了 范围 maxX = minX = 
		// 如果 比最大的还要大
		if(distanceX > maxX) {
			distanceX = maxX;
		} else if(distanceX < minX) {
			distanceX = minX;
		}
		if(Math.abs(moveX) > 0) {
			// 添加过渡即可
			ulDom.style.transition = 'all .5s';

			// 移动回去
			ulDom.style.transform = 'translateX(' + distanceX + 'px)';
		}
	})
}

/*更新如下:
1.解决了快速点击切换过快。现在连击切换有延迟。
2.解决了小圆点和左右按钮现在可以不要。而不会出现的bug
3.

*/
//这是函数
function imgscrool(obj) {
	var moving = false;
	var width = $(obj + " .banner .img li").width();
	var i = 0;
	var clone = $(obj + " .banner .img li").first().clone();
	$(obj + " .banner .img").append(clone);
	var size = $(obj + " .banner .img li").size();
	for(var j = 0; j < size - 1; j++) {
		$(obj + " .banner .num").append("<li></li>");
	}
	$(obj + " .banner .num li").first().addClass("on");

	/*鼠标划入圆点*/
	if($(obj + " .banner .num li")) {

		$(obj + " .banner .num li").hover(function() {
			var index = $(this).index();
			i = index;
			$(obj + " .banner .img").stop().animate({
				left: -index * width
			}, 1000)
			$(this).addClass("on").siblings().removeClass("on")
		})
	};

	/*自动轮播*/
	var t = setInterval(function() {
		i++;
		move();
	}, 2000)

	/*对banner定时器的操作*/
	$(obj + " .banner").hover(function() {
		clearInterval(t);
	}, function() {
		t = setInterval(function() {
			i++;
			move();
		}, 2000)
	})

	if($(obj + " .banner .btn_l")) {

		/*向左的按钮*/
		$(obj + " .banner .btn_l").stop(true).click(function() {
			if(moving) {
				return;
			};
			moving = true;
			i--
			move();
		})

		/*向右的按钮*/
		$(obj + " .banner .btn_r").stop(true).click(function() {
			if(moving) {
				return;
			}
			moving = true;
			i++
			move()
		})
	};

	/*图片滑动 touch事件)*/
	var imageBox = $(obj + " .banner .img").get(0);
	var startX = 0;
	var moveX = 0;
	var distanceX = 0;
	var isMove = false;

	imageBox.addEventListener('touchstart', function(e) {
		clearInterval(t);
		startX = e.touches[0].clientX;
	});
	imageBox.addEventListener('touchmove', function(e) {
		isMove = true;
		moveX = e.touches[0].clientX;
		distanceX = moveX - startX; /*distanceX  值  正负*/

		var currX = -i * width + distanceX;
		$(obj + " .banner .img").stop(true).animate({
			left: currX
		}, 1000)
	});
	/*手指向左滑动*/
	imageBox.addEventListener('touchend', function(e) {
		if(isMove && (Math.abs(distanceX) > width / 30)) {
			/*5.当超过了一定的距离的时候    滚动  到上一张 或 下一张  (一定的距离  1/20  屏幕宽度  过渡)*/
			if(distanceX > 0) {
				i--
				move1();
			} else {
				i++;
				move1();
			}
		} else {
			move()
		}
		/*重置*/
		startX = 0;
		moveX = 0;
		distanceX = 0;
		isMove = false;

		/*添加定时器*/
		clearInterval(t);
		t = setInterval(function() {
			i++;
			move();
		}, 2000)
	});

	function move() {

		if(i == size) {
			$(obj + " .banner  .img").css({
				left: 0
			})
			i = 1;
		}

		// 修改轮播每屏宽度
		if(i == -1) {
			$(obj + " .banner .img").css({
				left: -(size - 1) * width
			})
			i = size - 2;
		}
		$(obj + " .banner .img").stop(true).delay(200).animate({
			left: -i * width
		}, 1000, function() {
			moving = false;
		})

		if(i == size - 1) {
			$(obj + " .banner .num li").eq(0).addClass("on").siblings().removeClass("on")
		} else {
			$(obj + " .banner .num li").eq(i).addClass("on").siblings().removeClass("on")
		}
	}

	/*手指滑動圖片輪播函數*/
	function move1() {

		if(i == size) {
			$(obj + " .banner  .img").css({
				left: 0
			})
			i = 1;
		}

		// 修改轮播每屏宽度
		if(i == -1) {
			$(obj + " .banner .img").css({
				left: -(size - 1) * width
			})
			i = size - 2;
		}
		$(obj + " .banner .img").stop(true).animate({
			left: -i * width
		}, 1000, function() {
			moving = false;
		})

		if(i == size - 1) {
			$(obj + " .banner .num li").eq(0).addClass("on").siblings().removeClass("on")
		} else {
			$(obj + " .banner .num li").eq(i).addClass("on").siblings().removeClass("on")
		}
	}
}

/*第二种*/
/*轮播图*/
function banner() {
	/*获取到dom对象*/
	var banner = document.querySelector('.banner');
	var w = banner.offsetWidth;
	var imageBox = banner.querySelector('ul.img');
	var len = $('.img li').length;
	var pointBox = document.querySelector('ul.icon');
	var points = pointBox.querySelectorAll('li');

	/*添加过渡*/
	var addTransition = function() {
		imageBox.style.webkitTransition = "all .2s"; /*兼容*/
		imageBox.style.transition = "all .2s";
	};
	/*删除过渡*/
	var removeTransition = function() {
		imageBox.style.webkitTransition = "none"; /*兼容*/
		imageBox.style.transition = "none";
	};
	/*改变位子*/
	var setTranslateX = function(translateX) {
		imageBox.style.webkitTransform = "translateX(" + translateX + "px)";
		imageBox.style.transform = "translateX(" + translateX + "px)";
	};

	/*1.自动的滚动起来    (定时器,过渡)*/
	var index = 1;
	var timer = setInterval(function() {
		/*箱子滚动*/
		index++;
		/*加过渡*/
		addTransition();
		setTranslateX(-index * w);
		/*小标ul*/
		setPoint();
	}, 3000);

	/*绑定一个过渡结束事件*/
	imageBox.addEventListener('webkitTransitionEnd', function() {
		if(index >= 6) {
			index = 1;
			removeTransition();
			setTranslateX(-index * w);
		} else if(index <= 0) {
			index = 5;
			removeTransition();
			setTranslateX(-index * w);
		}
	});

	var setPoint = function() {
		/*把所有点的样式清除*/
		for(var i = 0; i < points.length; i++) {
			points[i].className = " ";
		}
		if(index >= 6) {
			points[0].className = "now";
		} else if(index <= 0) {
			points[4].className = "now";
		} else {
			points[index - 1].className = "now";
		}

	}

	/*3.图片滑动 touch事件)*/
	var startX = 0;
	var moveX = 0;
	var distanceX = 0;
	var isMove = false;

	imageBox.addEventListener('touchstart', function(e) {
		/*清除定时器*/
		clearInterval(timer);
		startX = e.touches[0].clientX;
	});
	imageBox.addEventListener('touchmove', function(e) {
		isMove = true;
		moveX = e.touches[0].clientX;
		distanceX = moveX - startX;
		/*将要去做定位*/
		var currX = -index * w + distanceX;
		/*删除过渡*/
		removeTransition();
		/*改变位子*/
		setTranslateX(currX);
	});
	imageBox.addEventListener('touchend', function(e) {

		/*当超过了一定的距离的时候 */
		if(isMove && (Math.abs(distanceX) > w / 30)) {
			/*5.当超过了一定的距离的时候    滚动  到上一张 或 下一张  (一定的距离  1/20  屏幕宽度  过渡)*/
			if(distanceX > 0) {
				index--; /*向右滑  上一张*/
			} else {
				index++; /*向左滑 下一张*/
			}
			addTransition();
			setTranslateX(-index * w);
			setPoint();
		}
		/*当不超过一定的滑动距离的时候*/
		else {
			/*4.当不超过一定的滑动距离的时候  吸附回去  定位回去     (一定的距离  1/3  屏幕宽度  过渡)*/
			addTransition();
			setTranslateX(-index * w);
		}
		/*重置*/
		startX = 0;
		moveX = 0;
		distanceX = 0;
		isMove = false;

		/*添加定时器*/
		clearInterval(timer);
		timer = setInterval(function() {
			/*箱子滚动*/
			index++;
			/*定位  过渡来做定位的  这样才有动画*/
			/*加过渡*/
			addTransition();
			/*改变位子*/
			setTranslateX(-index * w);
			/*小标ul*/
			setPoint();
		}, 3000);
	});
}
/*===============================================轮播图END=====================================================*/
/*====================================防盗链加签名,访问阿里云数据需要权限-后面因为防盗链有问题就不用加签名了=====================================*/
function getVideoPower(gObj, fn) {
	$.ajax({
		type: "get",
		url: "/app/webVideo/getMSConfig.json?" + getNowTime(),
		async: true,
		dataType: 'json',
		success: function(data) {
			var configDataObj = data.data;
			var videoUrlOss = gObj.videoUrl.split('http://')[1];
			var videoUrlX = videoUrlOss.split('/')[0];
			if(configDataObj.customEndpoint == videoUrlX) {
				var client = new OSS.Wrapper({
					region: configDataObj.region,
					accessKeyId: configDataObj.accessKeyId,
					accessKeySecret: configDataObj.accessKeySecret,
					bucket: configDataObj.outBucket
				});
				videoUrlOss = videoUrlOss.substring(videoUrlOss.indexOf("\/") + 1, videoUrlOss.length);
				gObj.videoUrl = client.signatureUrl(videoUrlOss, {
					expires: configDataObj.expires
				});
			}
			//播放器
			gObj.player = new prismplayer({
				id: "J_prismPlayer", // 容器id
				source: gObj.videoUrl, // 视频地址
				autoplay: false, //自动播放:否
				width: "100%", // 播放器宽度
				height: "400px", // 播放器高度
				cover: gObj.videoPic,
				playsinline: true
			});
			if(fn) {
				fn();
			}
		}
	});
}

/*===========================================广告相关Start==============================================*/
/*广告倒计时*/
function adCountdown(total, adplaytime, fn) {
	/*倒计时div显示*/
	$('.adBtn').show();
	$('.adClose').hide(); /*关闭按钮隐藏状态*/
	$('.adSecond').html(total + 's'); /*显示广告总时长*/
	var i = 0;
	var clock = setInterval(function() {
		total--;
		i++;
		if(i == adplaytime) {
			$('.adClose').show(); /*显示关闭按钮*/
		};
		if(total > 0) {
			$(".adSecond").html(total + 's'); /*广告时长倒计时*/
		} else {
			clearInterval(clock); //清除js定时器
			$('.adBtn').hide(); /*最后隐藏倒计时div*/
			if(fn) {
				fn();
			}
		}
	}, 1000);

	$(".adClose").click(function() {
		clearInterval(clock); //清除js定时器
		$('.adBtn').hide();
		if(fn) {
			fn();
			$(".adClose").off('click');
		}
	})
}

/*ios片尾广告封装*/
function adLastOne(gObj, adUrl, videoUrl, pasteradlist1) {
	gObj.player.on('ended', function() {
		$('.prism-controlbar').css('opacity', 0);
		gObj.player.loadByUrl(adUrl);
		var totalSecond = Math.floor(pasteradlist1.advideotime / 1000);
		var adplaytime = Math.floor(pasteradlist1.adplaytime / 1000);
		$('.adSecond').html(totalSecond + 's');
		$('.adBtn').show();
		$('.prism-big-play-btn').hide();
		gObj.player.off('ended');
		/*广告倒计时*/
		adCountdown(totalSecond, adplaytime, function() {
			$('.adBtn').remove();
			$('.prism-big-play-btn').hide();
			$('.prism-controlbar').css('opacity', 1);
			gObj.player.loadByUrl(videoUrl);
			gObj.player.pause();
		})
	})
}

/*andriod片尾广告封装*/
function adLastAndriod(gObj, adUrl, videoUrl) {
	gObj.player.on('ended', function() {
		gObj.player.loadByUrl(adUrl);
		$('.prism-controlbar').css('opacity', 0);
		gObj.player.off('ended');
		gObj.player.on('ended', function() {
			gObj.player.loadByUrl(videoUrl);
			gObj.player.pause();
		})
	})
}

/*ios片中广告封装*/
function adMiddle(gObj, pasteradlist1) {
	var adUrlMiddle = pasteradlist1.adpicture;
	var puttime = pasteradlist1.puttime;
	var Middletotal = Math.floor(pasteradlist1.advideotime / 1000);
	var MiddleAdplaytime = Math.floor(pasteradlist1.adplaytime / 1000);
	var getTime = setInterval(function() {
		var currentTime = Math.floor(gObj.player.getCurrentTime());
		if(currentTime == puttime) {
			clearInterval(getTime);
			gObj.player.pause();
			$('#adJ_prismPlayer').show();
			gObj.Adplayer = new prismplayer({
				id: "adJ_prismPlayer", // 容器id
				source: adUrlMiddle, // 视频地址
				autoplay: true, //自动播放:否
				width: "100%", // 播放器宽度
				height: "400px", // 播放器高度
				playsinline: true
			});
			gObj.Adplayer.play();
			$('.prism-controlbar').css('opacity', 0);
			adCountdown(Middletotal, MiddleAdplaytime, function() {
				$('#adJ_prismPlayer').remove();
				$('.prism-controlbar').css('opacity', 1);
				gObj.player.play();
				$('.prism-big-play-btn').hide();
			})

		}
	}, 1000)
}
/*===========================================广告相关END==============================================*/

猜你喜欢

转载自blog.csdn.net/qq_34664239/article/details/89014583