前端与原生进行交互方法打包

1.share.js


	// 必须定义方法为window下的对象
	var W = window;

	var channelId = "ares";

	var channelName = "管理驾驶舱";

	// 事件队列
	var _mevents = [],

	// Ajax并发事件 @type {Array}
    _clientAjax = [];
    
    var YT;

	// push 增加入队列
	// shift 先进先出
	// 设置自定义事件
	W.setWebitEvent = function(evtName, evtCode) {
		if (evtName == "") {
			return;
		}
		_mevents.push(JSON.stringify({
			code : evtCode,
			name : evtName
		}));
	};
	// 获取EventCode
	W.getWebkitEvent = function() {
		return _mevents.length > 0 ? _mevents.shift() : "0";
	};

	var iphone = {
		title : channelName,
		/**
		 * @Desc 客户端native ajax 请求
		 * @param url
		 *            {url} 请求地址
		 * @param params
		 *            {json} 请求参数
		 * @param succFuncName
		 *            {string} 成功回调函数名称
		 * @param failFuncName
		 *            {string} 失败回调函数名称
		 * @example YT.post('/mbank/login/login.do',{p1:'x'},'success');
		 */
		post : function(url, params, succFuncName, failFuncName) {
			var data = {
				"channelData" : params,
				"cookiedata" : document.cookie
			};
			try {
				_clientAjax.push(JSON.stringify({
					url : url,
					params : data,
					success : Fw.getFunctionName(succFuncName),
					failure : Fw.getFunctionName(failFuncName),
					channelId : channelId
				}));
				setWebitEvent(_clientAjax && _clientAjax.shift(), '1001');
			} catch (e) {
				alert('post=' + e);
			}
		},

		xmlPost : function(url, params, hearder, success) {
			var reqData = Fw.encodeBase64(params);
			var data = {
				"accepType" : "*/*",
				"contextType" : "*/*",
				"channelData" : reqData,
				"cookiedata" : document.cookie,
				"headers" : hearder
			};
			var func1 = function(data) {
				var c = eval(success);
				var result = Fw.decodeBase64(data.msg)
				new c(result);
			};
			try {
				_clientAjax.push(JSON.stringify({
					url : url,
					params : data,
					success : Fw.getFunctionName(func1),
					failure : Fw.getFunctionName(func1),
					channelId : channelId
				}));
				setWebitEvent(_clientAjax && _clientAjax.shift(), '1001');
			} catch (e) {
				alert('post=' + e);
			}
		},
		/**
		 * get请求方法
		 */
		get : function(url, callback) {
			var data = {
				"method" : "GET",
				"channelData" : "",
				"cookiedata" : document.cookie
			};
			try {
				_clientAjax.push(JSON.stringify({
					url : url,
					params : data,
					success : Fw.getFunctionName(callback),
					failure : Fw.getFunctionName(callback),
					channelId : channelId
				}));
				setWebitEvent(_clientAjax && _clientAjax.shift(), '1001');
			} catch (e) {
				alert('post=' + e);
			}
		},

		xmlGet : function(url, success) {
			var data = {
				"method" : "GET",
				"accepType" : "*/*",
				"contextType" : "*/*",
				"cookiedata" : document.cookie
			};
			var func1 = function(data) {
				var c = eval(success);
				var result = Fw.decodeBase64(data.msg)
				new c(result);
			};
			try {
				_clientAjax.push(JSON.stringify({
					url : url,
					params : data,
					success : Fw.getFunctionName(func1),
					failure : Fw.getFunctionName(func1),
					channelId : channelId
				}));
				setWebitEvent(_clientAjax && _clientAjax.shift(), '1001');
			} catch (e) {
				alert('post=' + e);
			}
		},

		/**
		 * 标题栏方法
		 */
		initPageTitle : function(title, btnLeftName, btnLeftFun) {
			var cfg = {
				title : title
			};
			var leftFunc = Fw.getFunctionName(btnLeftFun);
			cfg.leftButton = {
				exist : 'true',
				text : btnLeftName,
				handler : leftFunc
			};
			var rightFunc = Fw.getFunctionName(function() {
				YT.gotoIndex();
			});
			cfg.rightButton = {
				exist : true,
				text : "返回",
				handler : 'YT.gotoIndex'
			};
			setWebitEvent(JSON.stringify(cfg), "02");
		},

		/**
		 * @Desc 返回系统首页(此方法直接使用,客户端会自动监听
		 * @example YT.gotoIndex();
		 */
		gotoIndex : function() {
			setWebitEvent("{}", "08");
		},
		
		/**
		 * 回到首页
		 */
		gotoHomePage : function() {
			window.SysClientJs.gotoHomePage();
		},
		/**
		 * 获取token
		 */
		getAuthToken : function(callback) {
			W.setWebitEvent(Fw.getFunctionName(callback), "1002");
		},

		/**
		 * 屏幕全屏显示
		 */
		isShowTitle : function(b) {
			if (b == true) {
				W.setWebitEvent("false", "1005");
			} else {
				W.setWebitEvent("true", "1005");
			}
		},

		/**
		 * 是否横屏
		 */
		isLandscape : function(b) {
			W.setWebitEvent(b, "1007");
		},

		/**
		 * 获取定位信息
		 */
		getLocationInfo : function(callback) {
			W.setWebitEvent(Fw.getFunctionName(callback), "1006");
		},

		/**
		 * 文件下载
		 */
		download : function(callback, url) {
			var cfg = {
				url : url,
				channelId : channelId
			};
			var params = {
				callback : Fw.getFunctionName(callback),
				params : cfg
			};
			W.setWebitEvent(JSON.stringify(params), "1008");
		},

		/**
		 * 文件下载
		 */
		getImage : function(url, callback) {
			var cfg = {
				url : url,
				channelId : channelId
			};
			var params = {
				callback : Fw.getFunctionName(callback),
				params : cfg
			};
			W.setWebitEvent(JSON.stringify(params), "1016");
		},

		/**
		 * 通过外部浏览器下载文件
		 */
		browserDown : function(url) {
			var cfg = {
				url : url,
				channelId : channelId
			};
			var params = {
				params : cfg
			};
			W.setWebitEvent(JSON.stringify(params), "1009");
		},

		/**
		 * 通过路径打开文件
		 */
		openFile : function(path) {
			var cfg = {
				path : path,
			};
			W.setWebitEvent(JSON.stringify(cfg), "1010");
		},

		/**
		 * 活体检测
		 */
		recongnition : function(callback) {
			W.setWebitEvent(Fw.getFunctionName(callback), "1011");
		},

		/**
		 * 签字版
		 */
		signaturePad : function(callback) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(data) {
				var c = eval(func);
				new c(data);
			};
			W.setWebitEvent(Fw.getFunctionName(func1), "1014");
		},

		/**
		 * 调用相机拍照
		 */
		camera : function(callback) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(data) {
				console.log(data);
				var c = eval(func);
				new c(data.base64);
			};
			W.setWebitEvent(Fw.getFunctionName(func1), "1012");
		},

		/**
		 * 调用相机拍照(图片压缩) maxSize : 图片最大大小,单位kb
		 */
		camera2 : function(callback, scale, quality, mark) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(data) {
				var c = eval(func);
				new c(data.path, data.base64);
			};
			var params = {
				scale : scale || '1',
				quality : quality || '0.5',
				mark : mark || 'false',
				callback : Fw.getFunctionName(func1)
			};
			W.setWebitEvent(JSON.stringify(params), "1017");
		},

		/**
		 * 调用ocr相机拍照
		 */
		ocrCamera : function(callback) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(data) {
				var c = eval(func);
				new c(data.base64);
			};
			W.setWebitEvent(Fw.getFunctionName(func1), "1015");
		},

		/**
		 * 调用手机相册
		 */
		ptAlbum : function(callback) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(data) {
				var c = eval(func);
				new c(data.base64);
			};
			W.setWebitEvent(Fw.getFunctionName(func1), "1013");
		},

		/**
		 * 调用手机相册(图片压缩) scale : 尺寸压缩系统;0-1 1原图大小 默认原图 quality : 质量压缩系数;0-1 1质量最好
		 * 默认 0.5 mark : 图片加水印 默认不加水印
		 */
		ptAlbum2 : function(callback, scale, quality, mark) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(data) {
				var c = eval(func);
				new c(data.path, data.base64);
			};
			var params = {
				scale : scale || '1',
				quality : quality || '0.5',
				mark : mark || 'false',
				callback : Fw.getFunctionName(func1)
			};
			W.setWebitEvent(JSON.stringify(params), "1018");
		},

		/**
		 * 是否显示水印
		 */
		showWaterMark : function(b) {
			if (b == true) {
				W.setWebitEvent("true", "49");
			} else {
				W.setWebitEvent("false", "49");
			}
		},

		/**
		 * 防截屏控制(IOS无法防止截屏)
		 */
		screenCapture : function(b) {
			return;
		},

		/**
		 * 文件名
		 */
		uploadFile : function(callback) {
			W.setWebitEvent(Fw.getFunctionName(callback), "1019");
		},
		
		/**
		 * 下载文档并打开
		 */
		openOffice : function(url){
			var params = {
				url : url
			}; 
			W.setWebitEvent(JSON.stringify(params), "1020");
		},
		
		appCallUp : function(url, pakg, appName, downLoadUrl){
			var params = {
				url : url,
				appName : appName,
				downLoadUrl : downLoadUrl
			}; 
			W.setWebitEvent(JSON.stringify(params), "1021");
		},
		
		/**
		 * 获取门户app版本号
		 */
		getAppVersion : function(callback){
			W.setWebitEvent(Fw.getFunctionName(callback), "1022");
		},
		
		/**
		 * 保存图片(Base64)
		 */
		saveImageToBase64 : function(data){
			var params = {
					title : "移动门户",
					image : data
			}
			W.setWebitEvent(JSON.stringify(params), "1023");
		},
		
		/**
		 * 分享,1、微信好友分享,2、微信朋友圈分享,3、支付宝分享
		 */
		share : function(type,data){
			console.log(JSON.stringify(data));
			if(type == 1){
				console.log("微信好友分享");
				W.setWebitEvent(JSON.stringify(data), "1024");
			}else if(type ==2){
				console.log("微信朋友圈分享");
				W.setWebitEvent(JSON.stringify(data), "1025");
			}else if(type ==3){
				console.log("支付宝分享");
				W.setWebitEvent(JSON.stringify(data), "1026");
			}
		},
		
		
		/**
		 * 二维码扫描
		 */
		scanQR : function(callback){
			W.setWebitEvent(Fw.getFunctionName(callback), "1027");
		},
		
		/**
		 * 
		 * @Desc 打电话
		 * @param phoneNo
		 *            手机号
		 */
		callPhone : function(phoneNo) {
			var cfg = {
				phoneNo : phoneNo
			};
			setWebitEvent(JSON.stringify(cfg), '18');
		}
	};

	var android = {

		title : channelName,
		/**
		 * 客户端native ajax 请求
		 * 
		 * @param url
		 *            请求地址
		 * @param params
		 *            请求参数
		 * @param success
		 *            成功回调函数
		 * @param failure
		 *            失败回调函数
		 */
		post : function(url, params, success, failure) {
			var data = {
				"channelData" : params,
				"cookiedata" : document.cookie
			};
			var cfg = {
				url : url,
				params : data,
				success : Fw.getFunctionName(success),
				failure : Fw.getFunctionName(failure)
			};
			window.SysClientJs.threeparty_post(JSON.stringify(cfg), channelId);
		},

		xmlPost : function(url, params, hearder, success) {
			var reqData = Fw.encodeBase64(params);
			var data = {
				"accepType" : "*/*",
				"contextType" : "*/*",
				"channelData" : reqData,
				"cookiedata" : document.cookie,
				"headers" : hearder
			};
			var func1 = function(data) {
				var c = eval(success);
				var result = Fw.decodeBase64(data.msg);
				new c(result);
			};
			var cfg = {
				url : url,
				params : data,
				success : Fw.getFunctionName(func1),
				failure : Fw.getFunctionName(func1)
			};
			window.SysClientJs.threeparty_post(JSON.stringify(cfg), channelId);
		},

		/**
		 * get请求方法
		 */
		get : function(url, callback) {
			var data = {
				"method" : "GET",
				"channelData" : "",
				"cookiedata" : document.cookie
			};
			var cfg = {
				url : url,
				params : data,
				success : Fw.getFunctionName(callback),
				failure : Fw.getFunctionName(callback)
			};
			window.SysClientJs.threeparty_post(JSON.stringify(cfg), channelId);
		},

		xmlGet : function(url, success) {
			var data = {
				"method" : "GET",
				"accepType" : "*/*",
				"contextType" : "*/*",
				"cookiedata" : document.cookie
			};
			var func1 = function(data) {
				var c = eval(success);
				var result = Fw.decodeBase64(data.msg)
				new c(result);
			};
			var cfg = {
				url : url,
				params : data,
				success : Fw.getFunctionName(func1),
				failure : Fw.getFunctionName(func1)
			};
			window.SysClientJs.threeparty_post(JSON.stringify(cfg), channelId);
		},

		/**
		 * 标题栏方法
		 */
		initPageTitle : function(title, btnLeftName, btnLeftFun) {
			var cfg = {
				title : title
			};
			var leftFunc = Fw.getFunctionName(btnLeftFun);
			cfg.leftButton = {
				exist : 'true',
				name : btnLeftName,
				func : leftFunc
			};
			var rightFunc = Fw.getFunctionName(function() {
				YT.gotoAppHome();
			});
			cfg.rightButton = {
				exist : 'true',
				name : "返回",
				func : rightFunc
			};
			window.SysClientJs.initPageTitle(JSON.stringify(cfg));
		},

		/**
		 * 返回上一层
		 */
		gotoIndex : function() {
			window.SysClientJs.gotoIndex();
		},
		
		/**
		 * 回到首页
		 */
		gotoAppHome : function() {
			window.SysClientJs.gotoIndexFrist();
		},
		
		/**
		 * 获取token
		 */
		getAuthToken : function(callback) {
			window.SysClientJs.getOAuthToken(Fw.getFunctionName(callback));
		},

		/**
		 * 文件下载方法
		 */
		download : function(callback, url) {
			var cfg = {
				url : url,
				channelId : channelId
			};
			window.SysClientJs.downloadFile(Fw.getFunctionName(callback), JSON
					.stringify(cfg));
		},

		/**
		 * 文件下载方法
		 */
		getImage : function(url, callback) {
			var cfg = {
				url : url,
				channelId : channelId
			};
			window.SysClientJs.getImage(Fw.getFunctionName(callback), JSON
					.stringify(cfg));
		},

		/**
		 * 通过外部浏览器下载文件
		 */
		browserDown : function(url) {
			var cfg = {
				url : url,
				channelId : channelId
			};
			window.SysClientJs.webDownloadFile(JSON.stringify(cfg));
		},

		/**
		 * 通过路径打开文件
		 */
		openFile : function(path) {
			window.SysClientJs.openFile(path);
		},

		/**
		 * 调用相机拍照
		 */
		camera : function(callback) {
			window.SysClientJs.callCamera(Fw.getFunctionName(callback));
		},

		/** 
		 * 调用手机相册(图片压缩) scale : 尺寸压缩系统;0-1 1原图大小 默认原图 quality : 质量压缩系数;0-1 1质量最好
		 * 默认 0.5 mark : 图片加水印 默认不加水印
		 */
		camera2 : function(callback, scale, quality, mark) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(data) {
				var c = eval(func);
				new c("", data);
			};
			var s = scale || "1";
			var q = quality || "0.5";
			var m = mark || "false";
			window.SysClientJs.callCameraControlSize(Fw
					.getFunctionName(func1), s, q, m);

		},

		/**
		 * 调用ocr相机拍照
		 */
		ocrCamera : function(callback) {
			window.SysClientJs.takePhoto(Fw.getFunctionName(callback));
		},

		/**
		 * 调用手机相册
		 */
		ptAlbum : function(callback) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(path, data) {
				var c = eval(func);
				new c(data);
			};
			window.SysClientJs.callAlbum(Fw.getFunctionName(func1));
		},

		/**
		 * 调用手机相册(图片压缩) scale : 尺寸压缩系统;0-1 1原图大小 默认原图 quality : 质量压缩系数;0-1 1质量最好
		 * 默认 0.5 mark : 图片加水印 默认不加水印
		 */
		ptAlbum2 : function(callback, scale, quality, mark) {
			var s = scale || "1";
			var q = quality || "0.5";
			var m = mark || "false";
			window.SysClientJs.callAlbumControlSize(Fw
					.getFunctionName(callback), s, q, m);
		},

		/**
		 * 获取定位信息
		 */
		getLocationInfo : function(callback) {
			window.SysClientJs.getLocation(Fw.getFunctionName(callback));
		},

		/**
		 * 是否横屏
		 */
		isLandscape : function(b) {
			window.SysClientJs.setScreenOrientation(b);
		},

		/**
		 * 活体检测
		 */
		recongnition : function(callback) {
			window.SysClientJs.openLiveness(Fw.getFunctionName(callback));
		},

		/**
		 * 签字版
		 */
		signaturePad : function(callback) {
			var func = Fw.getFunctionName(callback);
			var func1 = function(path, data) {
				var c = eval(func);
				new c(data);
			};
			window.SysClientJs.openSignaturePad(Fw.getFunctionName(func1));
		},

		/**
		 * 是否显示标题栏
		 */
		isShowTitle : function(b) {
			window.SysClientJs.isShowTopBar(b);
		},

		/**
		 * 是否显示水印
		 */
		showWaterMark : function(b) {
			window.SysClientJs.showWaterMark(b);
		},

		/**
		 * 防截屏控制
		 */
		screenCapture : function(b) {
			window.SysClientJs.screenCapture(b);
		},

		docTransfrom : function(fileName) {
			var params = {
				fileName : fileName,
				systemId : channelId
			};
			window.SysClientJs.previewPdf(JSON.stringify(params));
		},

		/**
		 * 背夹身份正 pad
		 */
		getBJIdCard : function(callback) {
			window.SysClientJs.getLocationId(Fw.getFunctionName(callback));
		},

		/**
		 * 背夹Ic卡 pad
		 */
		getIcCard : function(callback) {
			window.SysClientJs.getIcCard(Fw.getFunctionName(callback));
		},

		/**
		 * 背夹磁条卡 pad
		 */
		getStripeCard : function(callback) {
			window.SysClientJs.getStripeCard(Fw.getFunctionName(callback));
		},

		/**
		 * 获取推送id pad
		 */
		getPushMsg : function(callback) {
			window.SysClientJs.getPushId(Fw.getFunctionName(callback));
		},
		
		/**
		 * 下载文档并打开
		 */
		openOffice : function(url) {
			var params = {
				url : url
			};
			window.SysClientJs.previewHttp(JSON.stringify(params));
		},
		
		/**
		 * app唤起
		 */
		appCallUp : function(url, pakg, appName, downLoadUrl){
			var params = {
				url : url,
				pakg : pakg,
				appName : appName,
				downLoadUrl : downLoadUrl
			}; 
			window.SysClientJs.awakenApp(JSON.stringify(params));
		},
		
		/**
		 * 获取门户app版本号
		 */
		getAppVersion : function(callback){
			window.SysClientJs.getAppVersion(Fw.getFunctionName(callback));
		},
		
		uploadFile : function(url, filePath, callback){
			var params = {
					url : url,
					path : filePath,
					callBack : Fw.getFunctionName(callback),
			}; 
			window.SysClientJs.uploadFile(JSON.stringify(params));
		},
		
		video : function(callback){
			window.SysClientJs.userVideo(Fw.getFunctionName(callback));
		},
		
		screen : function(callback){
			window.SysClientJs.screen(Fw.getFunctionName(callback));
		},
		
		videoTalk : function(){
			window.SysClientJs.videoTalk();
		},
		
		/**
		 * 保存图片(Base64)
		 */
		saveImageToBase64 : function(data){
			window.SysClientJs.saveImageToGallery(data);
		},
		
		/**
		 * 分享,1、微信好友分享,2、微信朋友圈分享,3、支付宝分享
		 */
		share : function(type,data){
			console.log(data);
			if(type == 1){
				window.SysClientJs.wXFriendShare(JSON.stringify(data));
			}else if(type ==2){
				window.SysClientJs.wXCircleShare(JSON.stringify(data));
			}else if(type ==3){
				window.SysClientJs.alipayShare(JSON.stringify(data));
			}
		},	
		
		/**
		 * 二维码扫描
		 */
		scanQR : function(callback){
			window.SysClientJs.scan(Fw.getFunctionName(callback));
		},
		
		/**
		 * 打电话
		 */
		callPhone : function(phoneNo) {
			window.SysClientJs.dialPhone(phoneNo);
		},
		
		/**
		 * 唤起密码键盘
		 */
		pwKeyBoard : function(callback){
			window.SysClientJs.toLock(Fw.getFunctionName(callback));
		},
		
		/**
		 * 混淆加密文件
		 */
		mixEncrypt : function(data, token){
			window.SysClientJs.encrypt(data, token, function(msg){
				console.log(msg);
			});
		},
		
		/**
		 * 混淆解密
		 */
		mixDecrypt : function(token, callback){
			window.SysClientJs.decrypt(token, Fw.getFunctionName(callback));
		}
	};
	channelName = channelName;
	var u = navigator.userAgent;
	if (u.indexOf('iPhone') > -1 || u.indexOf('iPad') > -1) {// 苹果手机
		YT = iphone;
	} else if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
		YT = android;
	}


var Fw = {
	idSeed : Math.round(Math.random()*100000),

	// private property
	_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
	/**
	 * 返回一个id
	 * 
	 * @returns {string}
	 */
	id : function() {
		return 'fw_gen_' + (++Fw.idSeed);
	},
	/**
	 * 空方法
	 */
	emptyFn : function() {
	},
	/**
	 * 将sessionStorage中的信息保存到客户端中<br>
	 * (客户端从h5跳转到webview时,客户端主动调用Fw.stop方法)
	 * 
	 * @returns {String}
	 */
	stop : function() {
		var json = {};
		for (var i = 0; i < sessionStorage.length; i++) {
			var key = sessionStorage.key(i);
			var val = sessionStorage.getItem(key);
			json[key] = val.replace(/\"/g, "+");
		}
		var str = "";
		if (!Fw.isEmpty(json)) {
			str = JSON.stringify(json);
		}
		if (window.Device.os == "android") {
			window.SysClientJs.setWebSession(str);
		} else {
			return str;
		}
	},
	/**
	 * 页面初始化时将stop方法传给客户端中的信息保存到sessionStorage中
	 */
	start : function() {
		var run = true;
		try {
			if (sessionStorage.length == 0) {
				if (Fw.os == "android") {
					run = false;
					window.SysClientJs.getWebSession();
				} else if (Fw.os == "iphone") {
					run = false;
					setWebitEvent("{}", "39");
				}
			}
		} catch (e) {
		}
		run && Fw.afterInitSession();
	},
	initSession : function(jsonStr) {
		try {
			if (jsonStr) {
				var json = Fw.JsonEval(jsonStr);
				if (Fw.isObject(json)) {
					$.each(json, function(key, val) {
						val = val.replace(/\+/g, "\"");
						sessionStorage.setItem(key, val);
					});
				}
			}
		} catch (e) {
			alert(e);
		}
		try {
			Fw.afterInitSession();
		} catch (e) {
			alert(e);
		}
	},
	afterInitSession : function() {
	},
	/**
	 * 定义命名空间
	 * 
	 * @returns {*} 返回命名空间
	 */
	namespace : function() {
		var space = null, path;
		Fw.each(arguments, function(v) {
			path = v.split('.');
			space = window[path[0]] = window[path[0]] || {};
			Fw.each(path.slice(1), function(v2) {
				space = space[v2] = space[v2] || {};
			});
		});
		return space;
	},
	/**
	 * 属性复制(同jQuery的$.extend)
	 * 
	 * @param object
	 * @param config
	 * @param defaults
	 * @returns {*}
	 */
	apply : function(object, config, defaults) {
		if (defaults) {
			Fw.apply(object, defaults);
		}
		if (object && config && Fw.isObject(config)) {
			for ( var property in config) {
				object[property] = config[property];
			}
		}
		return object;
	},
	/**
	 * 属性复制(仅复制object中不存在的属性)
	 * 
	 * @param object
	 * @param config
	 * @returns {*}
	 */
	applyIf : function(object, config) {
		if (object) {
			for ( var p in config) {
				if (!Fw.isDefined(object[p])) {
					object[p] = config[p];
				}
			}
		}
		return object;
	},
	/**
	 * 继承
	 */
	extend : function() {
		var objectConstructor = Object.prototype.constructor, inlineOverrides = function(
				o) {
			for ( var m in o) {
				if (!o.hasOwnProperty(m)) {
					continue;
				}
				this[m] = o[m];
			}
		};
		return function(subclass, superclass, overrides) {
			if (Fw.isObject(superclass)) {
				overrides = superclass;
				superclass = subclass;
				subclass = overrides.constructor !== objectConstructor ? overrides.constructor
						: function() {
							superclass.apply(this, arguments);
						};
			}
			if (!superclass) {
				return null;
			}
			//
			var F = function() {
			};
			var subclassProto, superclassProto = superclass.prototype;
			F.prototype = superclassProto;
			subclassProto = subclass.prototype = new F();
			subclassProto.constructor = subclass;
			subclass.superclass = superclassProto;
			if (superclassProto.constructor === objectConstructor) {
				superclassProto.constructor = superclass;
			}
			subclass.override = function(overrides) {
				Fw.override(subclass, overrides);
			};
			subclassProto.override = inlineOverrides;
			subclassProto.proto = subclassProto;
			subclass.override(overrides);
			subclass.extend = function(o) {
				return Fw.extend(subclass, o);
			};
			return subclass;
		};
	}(),
	/**
	 * 覆盖
	 * 
	 * @param cls
	 *            {object} 源对象
	 * @param overrides
	 *            {object} 新对象
	 */
	override : function(cls, overrides) {
		Fw.apply(cls.prototype, overrides);
	},
	/**
	 * 转换为字符
	 * 
	 * @param v
	 *            {object}
	 * @returns {string}
	 */
	toString : function(v) {
		return Object.prototype.toString.apply(v);
	},
	/**
	 * 判断值是否已定义
	 * 
	 * @param v
	 *            {*}
	 * @returns {boolean}
	 */
	isDefined : function(v) {
		return typeof v !== 'undefined';
	},
	/**
	 * 是否为空
	 * 
	 * @param v
	 *            {*} 值
	 * @param allowBlank
	 *            {boolean} 是否允许空
	 * @returns {boolean|*}
	 */
	isEmpty : function(v, allowBlank) {
		return v === null || v === undefined
				|| String(v).toUpperCase() === 'NULL'
				|| ((Fw.isArray(v) && !v.length))
				|| (!allowBlank ? v === '' : false);
	},

	/**
	 * 是否是数组
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isArray : function(v) {
		return Fw.toString(v) === '[object Array]';
	},
	/**
	 * 是否是日期
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isDate : function(v) {
		return Fw.toString(v) === '[object Date]';
	},
	/**
	 * 是否是对象
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isObject : function(v) {
		return !!v && Fw.toString(v) === '[object Object]';
	},
	/**
	 * 是否是函数
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isFunction : function(v) {
		return Fw.toString(v) === '[object Function]';
	},
	/**
	 * 是否是数值型
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isNumber : function(v) {
		return typeof v === 'number' && isFinite(v);
	},
	/**
	 * 是否是字符型
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isString : function(v) {
		return typeof v === 'string';
	},
	/**
	 * 是否是布尔型
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isBoolean : function(v) {
		return typeof v === 'boolean';
	},
	/**
	 * 是否是原始类型
	 * 
	 * @param v
	 * @returns {*|boolean}
	 */
	isPrimitive : function(v) {
		return Fw.isString(v) || Fw.isNumber(v) || Fw.isBoolean(v);
	},
	/**
	 * 是否可迭代
	 * 
	 * @param v
	 * @returns {*}
	 */
	isIterable : function(v) {
		return (v && typeof v !== 'string') ? Fw.isDefined(v.length) : false;
	},
	/**
	 * 是否是URL
	 * 
	 * @param v
	 * @returns {boolean}
	 */
	isUrl : function(v) {
		return /(((^https?)|(^ftp)):\/\/((([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*)|(localhost|LOCALHOST|127.0.0.1))\/?)/i
				.test(v);
	},
	/**
	 * 获取指定位数的随机数
	 * 
	 * @param num
	 * @returns {string}
	 */
	getRandom : function(num) {
		var tmp = "";
		if (num && num > 0) {
			for (var i = 0; i < num; i++) {
				tmp += Math.floor(Math.random() * 10);
			}
		}
		return tmp;
	},
	/**
	 * 获取验证码回调
	 * 
	 * @param 参数
	 * @callback 回调函数
	 */
	transInfoSessionSave : function(params, callback) {
		Fw.Util.transInfoSessionSave(params, callback)
	},
	/*
	 * 获取用户登录后的信息
	 */
	getUserSessionInfor : function(callback) {
		Fw.Util.getUserSessionInfor(callback)
	},
	queryAcctProtect : function(callback) {
		Fw.AcctUtil.queryAcctProtect(callback)
	},
	getAcctProtect : function() {
		return Fw.AcctUtil.getAcctProtect();
	},

	/**
	 * 页面跳转
	 * 
	 * @param url
	 * @param params
	 */
	redirect : function(url, params) {
		var search = document.location.search;
		if (!Fw.isEmpty(search)) {
			search = search.replace(/(&?)t=[^&]+/g, '');
			search = search.replace(/(&?)parameters=[^&]+/g, '');
			url += search === '?' ? '' : search;
		}
		url += (url.indexOf('?') > 0 ? '&' : '?') + 't=' + new Date().getTime();
		if (!Fw.isEmpty(params)) {
			sessionStorage.setItem("_parameters", Fw.JsonToStr(params));
		}
		document.location.href = url;
	},
	/**
	 * 返回parameters参数 特指页面跳转间传递的参数
	 * 
	 * @returns {*}
	 */
	getParameters : function() {
		var params = sessionStorage.getItem("_parameters");
		sessionStorage.removeItem("_parameters");
		// params = Fw.isEmpty(params) ? {} : params;
		return Fw.JsonEval(params);
	},
	/**
	 * 清空 页面间跳转的参数
	 */
	clearParameters : function() {
		sessionStorage.removeItem("_parameters");
	},
	/**
	 * 遍历数组
	 * 
	 * @param value
	 * @param fn
	 * @param scope
	 * @returns {number}
	 */
	each : function(value, fn, scope) {
		if (Fw.isEmpty(value)) {
			return;
		}
		if (!Fw.isDefined(scope)) {
			scope = value;
		}
		if (Fw.isObject(value)) {
			var i = 0;
			for ( var prop in value) {
				if (value.hasOwnProperty(prop)) {
					if (fn.call(scope || value, prop, value[prop], i++, value) === false) {
						return;
					}
				}
			}
		} else {
			if (!Fw.isIterable(value) || Fw.isPrimitive(value)) {
				value = [ value ];
			}
			for (var i = 0, len = value.length; i < len; i++) {
				if (fn.call(scope || value[i], value[i], i, value) === false) {
					return i;
				}
			}
		}
	},
	/**
	 * 绑定作用域
	 * 
	 * @param fn
	 * @param scope
	 * @returns {*}
	 */
	bind : function(fn, scope) {
		if (!Fw.isFunction(fn)) {
			return fn;
		}
		return function() {
			return fn.apply(scope, arguments);
		};
	},
	/**
	 * 页面加载完成后操作
	 * 
	 * @param app
	 */
	onReady : function(app) {
		this.initEvent();
		if (app.init) {
			Fw.log.debug("--onReady--", "App");
			var deps = seajs.parseDependencies(app.init.toString());
			if (Fw.isArray(deps)) {
				if (app.requires && app.requires.length > 0) {
					deps = deps.concat(app.requires);
					console.log(deps);
				}
				Fw.define(deps, Fw.bind(app.init, app));
			} else {
				Fw.define(Fw.bind(app.init, app));
			}
		} else {
			Fw.define(app);
		}
	},
	/**
	 * 定义模块 桥接Seajs http://seajs.org
	 * 
	 * @param factory
	 */
	define : function(factory) {
		var args = arguments;
		if (args.length > 1 || !Fw.isFunction(factory)) {
			define.apply(this, args);
		} else {
			define.call(this, factory);
		}
	},
	/**
	 * 模版 桥接Juicer http://juicer.name
	 * 
	 * @returns {*}
	 */
	template : function() {
		var args = arguments;
		var tpl = args[0];
		if (Fw.isArray(tpl)) {
			if (tpl.length > 1) {
				var arr = [], funs = {};
				// 从模版中分出自定义函数
				Fw.each(tpl, function(item) {
					if (Fw.isObject(item)) {
						Fw.apply(funs, item);
					} else {
						arr.push(item);
					}
				});
				// 注册自定义函数
				Fw.each(funs, function(prop, fun) {
					if (Fw.isFunction(fun)) {
						juicer.register(prop, fun);
					}
				});
				//
				args[0] = arr.join('');
			} else {
				args[0] = tpl[0];
			}
		}
		return juicer.apply(this, args);
	},
	/**
	 * 查询当前日前几天的日期
	 * 
	 * @param AddDayCount
	 *            {int} 负数为前X天 正数为后X天
	 * @returns {string}
	 * @exaple Fw.getDate(-6)
	 */
	getDate : function(AddDayCount) { // 日期查询
		var dd = new Date();
		dd.setDate(dd.getDate() + AddDayCount + 1);
		var y = dd.getYear() + 1900;
		var m = (dd.getMonth() + 1) < 10 ? "0" + (dd.getMonth() + 1) : (dd
				.getMonth() + 1);
		var d = dd.getDate() < 10 ? "0" + dd.getDate() : dd.getDate();
		return y + "-" + m + "-" + d;
	},

	/**
	 * JSON对象转换为String
	 * 
	 * @param json
	 * @constructor
	 */
	JsonToStr : function(json) {
		return JSON.stringify(json);
	},
	/**
	 * String转换为JSON
	 * 
	 * @param str
	 * @returns {Object}
	 * @constructor
	 */
	JsonEval : function(str) {
		return eval("(" + str + ")");
		// return JSON.parse(str);
	},
	/**
	 * 返回客户端上一级
	 */
	gotoBack : function() {
		Fw.Client.gotoBack();
	},
    /**
     * 返回上一个页面
     */
    gotoPageBack : function(){
    	console.log('back');
    	window.history.back();
    },
	/* ===================客户端交互事件 end====================== */
	/**
	 * 获取方法名称
	 * 
	 * @param func
	 *            方法对象
	 * @param decodeURL
	 *            是否转码,如果该函数的接收参数中包含URL,则该参数需要置为true
	 * @returns {*}
	 */
	getFunctionName : function(func, decodeURL) {
		if (func == null || func == "") {
			return "";
		}
		if (Object.prototype.toString.apply(func) !== '[object Function]') {
			return func;
		}
		var funcName = Fw.id();
		console.log(funcName);
		// 创建可被调用的临时方法
		window[funcName] = function() {
			var args = [];
			Fw.each(arguments, function(arg) {
				if (true == decodeURL) {
					arg = decodeURIComponent(arg);
				}
				if ('string' == typeof arg && '{' == arg.charAt(0)
						&& '}' == arg.charAt(arg.length - 1)) {
					arg = Fw.JsonEval(arg.replace(/<\/?[^>]*>/g, '').replace(
							/[\r\n]/g, '<br>'));
				}
				args.push(arg);
			}, this);
			func.apply(this, args);
			delete window[funcName];// 删除临时方法
		};
		return funcName;
	},
	encodeBase64 : function(input) {
		var output = "";
		var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
		var i = 0;
		input = Fw._utf8_encodeBase64(input);
		while (i < input.length) {
			chr1 = input.charCodeAt(i++);
			chr2 = input.charCodeAt(i++);
			chr3 = input.charCodeAt(i++);
			enc1 = chr1 >> 2;
			enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
			enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
			enc4 = chr3 & 63;
			if (isNaN(chr2)) {
				enc3 = enc4 = 64;
			} else if (isNaN(chr3)) {
				enc4 = 64;
			}
			output = output + Fw._keyStr.charAt(enc1) + Fw._keyStr.charAt(enc2)
					+ Fw._keyStr.charAt(enc3) + Fw._keyStr.charAt(enc4);
		}
		return output;
	},

	// public method for decoding
	decodeBase64 : function(input) {
		var output = "";
		var chr1, chr2, chr3;
		var enc1, enc2, enc3, enc4;
		var i = 0;
		input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		while (i < input.length) {
			enc1 = Fw._keyStr.indexOf(input.charAt(i++));
			enc2 = Fw._keyStr.indexOf(input.charAt(i++));
			enc3 = Fw._keyStr.indexOf(input.charAt(i++));
			enc4 = Fw._keyStr.indexOf(input.charAt(i++));
			chr1 = (enc1 << 2) | (enc2 >> 4);
			chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
			chr3 = ((enc3 & 3) << 6) | enc4;
			output = output + String.fromCharCode(chr1);
			if (enc3 != 64) {
				output = output + String.fromCharCode(chr2);
			}
			if (enc4 != 64) {
				output = output + String.fromCharCode(chr3);
			}
		}
		output = Fw._utf8_decodeBase64(output);
		return output;
	},

	// private method for UTF-8 encoding
	_utf8_encodeBase64 : function(string) {
		string = string.replace(/\r\n/g, "\n");
		var utftext = "";
		for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if (c < 128) {
				utftext += String.fromCharCode(c);
			} else if ((c > 127) && (c < 2048)) {
				utftext += String.fromCharCode((c >> 6) | 192);
				utftext += String.fromCharCode((c & 63) | 128);
			} else {
				utftext += String.fromCharCode((c >> 12) | 224);
				utftext += String.fromCharCode(((c >> 6) & 63) | 128);
				utftext += String.fromCharCode((c & 63) | 128);
			}

		}
		return utftext;
	},

	// private method for UTF-8 decoding
	_utf8_decodeBase64 : function(utftext) {
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		while (i < utftext.length) {
			c = utftext.charCodeAt(i);
			if (c < 128) {
				string += String.fromCharCode(c);
				i++;
			} else if ((c > 191) && (c < 224)) {
				c2 = utftext.charCodeAt(i + 1);
				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
				i += 2;
			} else {
				c2 = utftext.charCodeAt(i + 1);
				c3 = utftext.charCodeAt(i + 2);
				string += String.fromCharCode(((c & 15) << 12)
						| ((c2 & 63) << 6) | (c3 & 63));
				i += 3;
			}
		}
		return string;
	}

};
export default { YT, Fw}

 

2.使用

import appApi from '../../common/share.js'
mounted() {
        appApi.YT.share(1);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值