UNPKG

react_toast_horse

Version:

react toast 消息提示

999 lines (936 loc) 35.4 kB
/** * Activity Util */ var isInApp = function(){ return !!navigator.userAgent.match(/ctripwireless/i); }, isInWechat = function(){ return !!navigator.userAgent.match(/micromessenger/i); }, isInIOS = function() { return !!navigator.userAgent.match(/iphone|ipad|ipod/i); }, getEnv = function(){ //return "uat"; var host = location.host; if (host.match(/localhost|127\.0|\.fat\d*\.qa\.nt\.ctripcorp\.com|ctriptravel\.com/i)) { return "fat"; } else if (host.match(/\.uat\.qa\.nt\.ctripcorp\.com/i)) { return "uat"; } else { return "pro"; } }, domReady = (function(){ var cache = [], ready = false; document.addEventListener("DOMContentLoaded", function(){ var fn; while(fn = cache.shift()) fn(); ready = true; }); return function(fn){ if(ready === true) fn(); else cache.push(fn); } })(); /** * Ready */ function ready(fn, ubt, other){ setUBT.done !== true && setUBT(ubt); other && other.captcha && setCaptcha.done !== true && setCaptcha(); other && other.hideHeader && CtripBar.app_set_navbar_hidden(true); domReady(function(){ if(isInApp()){ LizardLite.HybridReady(fn); } else{ LizardLite.ready(fn); } }); } /** * 加载UBT统计 */ function setUBT(obj){ if(setUBT.done) return; obj = obj || {}; let val = obj.h5 || ''; if(isInApp()) val = obj.app || val; if(isInWechat()) val = obj.wx || val; const input = document.createElement('input'); input.type = 'hidden'; input.id = "page_id"; input.value = val; document.body.appendChild(input); const script = document.createElement('script'); script.src = '//webresource.c-ctrip.com/code/ubt/_mubt.min.js'; document.body.appendChild(script); //设置已完成状态 setUBT.done = true; } /** * 执行captcha */ var captcha = function(fn){ captcha.cache.push(fn); } captcha.cache = []; /** * 加载滑块JS */ function setCaptcha(){ if(setCaptcha.done) return; var script = document.createElement('script'); script.src = '//' + { fat: 'webresource.fws.qa.nt.ctripcorp.com', uat: 'webresource.uat.qa.nt.ctripcorp.com', pro: 'webresource.c-ctrip.com' }[getEnv()] + '/ares/infosec/captcha/*/default/js/captcha.min.js'; script.onload = function(){ var fn; while(fn = captcha.cache.shift()) fn(); captcha = function(fn){ fn(); } } document.head.appendChild(script); //设置已完成状态 setCaptcha.done = true; } /** * Loading浮层 */ var loading = (function(){ var html = document.createElement('div'); html.innerHTML = [ '<div id="loading_layer">', '<div class="loading_box">游游努力加载中</div>', '</div>' ].join(''); var css = document.createElement('style'); css.type = 'text/css'; css.innerHTML = [ '#loading_layer{display:none;position:fixed;left:0;top:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:10000;}', '.loading_box{position:absolute;left:50%;top:50%;margin-left:-56px;margin-top:-56px;background:#fff;width:112px;height:27px;padding-top:85px;border-radius:7px;color:#666;font-size:12px;text-align:center;}', '.loading_box:before,.loading_box:after{content:"";position:absolute;background-size:135px;background-repeat:no-repeat;background-image:url(data:image/png;base64,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)}', '.loading_box:before{top:20px;left:25px;width:64px;height:57px;background-position:-72px 0;}', '.loading_box:after{top:10px;left:20px;width:69px;height:69px;background-position:0 0;-webkit-animation:loading 1s linear 0s infinite;animation:loading 1s linear 0s infinite;}', '@-webkit-keyframes loading{0%{-webkit-transform:rotate(0deg);}100%{-webkit-transform:rotate(360deg);}}', '@keyframes loading{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}' ].join(''); domReady(function(){ document.head.appendChild(css); document.body.appendChild(html); loading.show(); }); return { el: function(){ return document.querySelector('#loading_layer'); }, show : function(){ this.el()?this.el().style.display = 'block':null; }, hide : function(){ this.el()?this.el().style.display = 'none':null; } } })(); /** * 打开链接 * http://crn.site.ctripcorp.com/hapi/classes/CtripUtil.html#method_app_open_url */ function jump(url, mode){ CtripUtil.app_open_url(url, mode||2); } /** * 后退按钮逻辑 */ function back(){ var queryObj=getQueryParams(); var from=queryObj["from"]; if(from){ var targetMode=getUrlTargetMode(decodeURIComponent(from)); jump(decodeURIComponent(from),targetMode); return; } if(isInApp()){ CtripUtil.app_back_to_home(); return; } jump(window.location.protocol+"//m.ctrip.com/html5/"); } /** * 获取目标页面模式 */ function getUrlTargetMode(url){ url =url.toLowerCase(); if(url.indexOf("ctrip://")==0){ return 1; } return 2; } /** * 设置分享 * http://10.2.57.11/hapi/classes/CtripShare.html */ var appShare = function(){}; function setShare(shareData, success, failure){ if(isInApp()){ LizardLite.HybridReady(function(){ var nav_json = { "right": [{"tagname": "share"}] } window.app = { callback: function(obj) { var tagname = obj.tagname; if(tagname === 'share'){ (appShare = function(){ CtripShare.wrap_call_default_share(shareData.icon, shareData.title, shareData.desc, shareData.href); })(); } if(tagname === 'call_custom_share'){ if(!obj.error_code){ success && success(); }else{ obj.error_code.match(/-20[12]/) && failure && failure(); } } } }; var json_str = JSON.stringify(nav_json); CtripBar.app_refresh_nav_bar(json_str); }); } if(isInWechat()){ //微信调用的分享方法 LizardLite.weixinReady(function(cShell){ if(!cShell){ console.log("调用微信失败!"); return; } cShell.share(shareData).done(function(){ success && success(); }).fail(function (err) { failure && failure(); }); }); } } /* * APP分享 */ function setShareInApp(shareData){ if(!isInApp()){ return; } LizardLite.HybridReady(function(){ //调用分享API CtripShare.wrap_call_default_share(shareData.icon, shareData.title, shareData.desc, shareData.href); }); } /* * 微信分享 */ function setShareInWeChat(shareData, success, failure){ if(!isInWechat()){ return; } //微信调用的分享方法 LizardLite.weixinReady(function(cShell){ if(!cShell){ console.log("调用微信失败!"); return; } cShell.share(shareData).done(function(){ success && success(); }).fail(function (err) { failure && failure(); }); }); } /** * 设置Hybrid标题 * 默认值document.title */ var setTitle = function(title){ //设置Hybrid标题 if(isInApp()){ LizardLite.HybridReady(function(){ var nav_json = { "center": [{"tagname": "title", "value": title || document.title}] } var json_str = JSON.stringify(nav_json); CtripBar.app_refresh_nav_bar(json_str); }); } } /** * 获取微信wx对象 */ function weixinGlobal(success, failure){ if(isInWechat()){ //微信调用的分享方法 LizardLite.weixinReady(function(cShell){ cShell.weiXinGlobal().done(function(wx){ success && success(wx); }).fail(function(err){ failure && failure(); }); }); } } /** * 判断是否登录 */ function isLogin(){ return !!LizardLite.UserStore.isLogin(); } /** * 登录回调 */ function login(callback){ LizardLite.Member.isLogin(function(isLogin){ if(isLogin){ callback && callback(); }else{ LizardLite.Member.memberLogin({ param: 'from='+encodeURIComponent(location.href) }); } }); } /** * SOA2接口 * * @portID 服务ID * @envionment 主动选择请求环境 fat、uat、pro * @fatDonotNeedSubEnv fat环境是否需要添加环境变量 */ function Model(portID, envionment, fatDonotNeedSubEnv) { var domain = { fat: "gateway.m.fws.qa.nt.ctripcorp.com", uat: "gateway.m.uat.qa.ctripcorp.com", pro: "m.ctrip.com" }, env = envionment || getEnv(); return function(apiStr, params, success, failure, spinner){ if (typeof spinner == 'undefined') spinner = true; spinner && loading.show(); var model = LizardLite.Model({ url: location.protocol+'//'+domain[env]+'/restapi/soa2/'+portID+'/json/'+apiStr+(env=='fat' && !fatDonotNeedSubEnv ?"?subEnv=fws":""), param: params }); model.execute(function(data){ spinner && loading.hide(); success.call(this, data); }, function(e){ spinner && loading.hide(); failure.call(this, e); }); } } /** * 获取业绩统计参数 */ function getAlliance() { var getCookie = function (k, r, n) { var i = new RegExp("(^| )" + k + "=([^;]*)(;|$)"), a = document.cookie.match(i); return a ? n ? f.decode(a[2]) : a[2] : r || "" }; var getCookieObj = function (t, e) { var r, n = { __k: t }, i = [], a = getCookie(t, "", e); if (a) { i = a.split("&") || []; for (var o = 0; o < i.length; o++) r = i[o].split("="), r.length > 1 && (n[r[0]] = r[1]) } return n; }; var n = getCookieObj("Union") || {}; return { pushcode: getQuery("pushcode"), aid: n.AllianceID || 0, sid: n.SID || 0, ouid: n.OUID || "" }; } /** * 获取VID */ function getVID() { var _bfa = document.cookie.match(/_bfa=([^;]*);/); if (!!_bfa && _bfa.length >= 2) { return _bfa[1]; } else { return ''; } } /** * 文本转base64 * 唤醒App使用 */ function base64() { // private property var _keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; // public method for encoding var encode = function (input) { var output = ""; var chr1, chr2, chr3, enc1, enc2, enc3, enc4; var i = 0; input = _utf8_encode(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 + _keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4); } return output; }; // public method for decoding var decode = 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 = _keyStr.indexOf(input.charAt(i++)); enc2 = _keyStr.indexOf(input.charAt(i++)); enc3 = _keyStr.indexOf(input.charAt(i++)); enc4 = _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 = _utf8_decode(output); return output; }; // private method for UTF-8 encoding function _utf8_encode(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 function _utf8_decode(utftext) { var string = ""; var i = 0; var c = 0, c1 = 0, c2 = 0, c3 = 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; } return { encode: encode, decode: decode } } /** * 唤醒App方法 */ var activateApp = (function(){ /* //标准唤醒方法 var wakeupApp = function(url, isDownload, callback) { url = url || 'ctrip://wireless'; //非ctrip协议地址,转换为ctrip协议直连地址 if(url.substr(0, 8) !== "ctrip://"){ url = "ctrip://wireless/h5?url=" + base64().encode(url) + "&type=2"; } isDownload = typeof isDownload !== 'undefined' ? isDownload : false; callback = callback || function () {}; //延时唤醒App if (isInWechat()) { //微信唤醒 typeof Mkt.Weixin.wxLanuch3rd === 'function' && Mkt.Weixin.wxLanuch3rd({ schema: url, isdown: isDownload, callback: function () { callback(); } }); } else { //H5唤醒 if (typeof window["__wakeup"] === "undefined") { window["__wakeup"] = []; } window["__wakeup"].push({ 'url': url, //http协议 'isdown': isDownload, //唤醒失败是否需要下载,true需要下载。false不下载 'backurl': url, //ctrip协议 'waking': function () { callback(); } }); } } //提前使用唤醒方法 //方法可用时自动执行 var cache = [], ready = false; if(isInWechat()){ var timeid = setInterval(function(){ if (typeof Mkt !== 'undefined' && Mkt.Weixin) { clearInterval(timeid); var args; while(args = cache.shift()) wakeupApp.apply(null, args); ready = true; } }, 250); }else{ ready = true; } return function(){ if(ready) wakeupApp.apply(null, arguments); else cache.push(arguments); } */ }); /** * 格式化日期 * 转化SOA2的特殊日期格式类型 */ function formatDate(data){ return JSON.parse( JSON.stringify(data).replace(/\/Date\(\-?(\d+)(?:\-|\+)(?:\d+)\)\//g, function () { return new Date(Number(arguments[1])+8*3600*1000). toISOString().replace(/^(.*)T(.*)\.\d+Z$/,'$1 $2'); }) ) } /** * 取URL参数 */ function getQuery(name) { var reg = new RegExp("(?:^|&)"+ name +"=([^&]*)(?:&|$)"), ret = location.search.substr(1).match(reg); if(ret) return unescape(ret[1]); return ''; } /** * 取URL路由 */ function getRoute(){ var ret = location.pathname.slice(1).split('/'); if(ret.length > 3) return ret[3]; return ''; } /** * 事件订阅及触发 * 用于React组件通讯 */ var eventEmitter = { list: {}, on: function(key,listener){ if (!this.list[key]) this.list[key] = []; if (Object.keys(this.list).indexOf(listener) == -1 && typeof listener == 'function') this.list[key].push(listener); return this; }, trigger: function(key){ if (!this.list[key]) return; var args = Array.prototype.slice.call(arguments, 1) || []; var listeners = this.list[key]; for(var i = 0, item; item = listeners[i++];){ item.apply(this,args); } return this; }, off: function(key,listener){ if (!key && !listener) return; if (key && !listener) delete this.list[key]; if (key && listener) { var listeners = this.list[key]; var index = listeners.indexOf(listener); index > -1 && listeners.splice(index, 1); } return this; } } /** * 初始化设置 */ //设置app标题 setTitle(); /** * 定位服务 */ var locationServer={ //callback, error, posCallback, posError, isAccurate, cityCallBack, cityErrorCallBack,isForceLocate,needBaidu //使用方法如参数所示,默认返回都是高德坐标,needBaidu为true时,会转成百度坐标返回 requestCityInfo :function(params){ var callback=params.callback; var error=params.error; var posCallback=params.posCallback; var posError=params.posError; var isAccurate=params.isAccurate; //精确定位 var cityCallBack=params.cityCallBack; var cityErrorCallBack=params.cityErrorCallBack; var isForceLocate=params.isForceLocate; var needBaidu=params.needBaidu; if(callback && typeof callback !="function"){ console.log("callback is not a function in requestCityInfo"); return; } if(error &&typeof error !="function"){ console.log("error is not a function in requestCityInfo"); return; } if(posCallback &&typeof posCallback !="function"){ console.log("posCallback is not a function in requestCityInfo"); return; } if(cityCallBack &&typeof cityCallBack !="function"){ console.log("cityCallBack is not a function in requestCityInfo"); return; } if(cityErrorCallBack &&typeof cityErrorCallBack !="function"){ console.log("cityErrorCallBack is not a function in requestCityInfo"); return; } if(isAccurate!==false){ isAccurate=true; } if(isForceLocate!==false){ isForceLocate=true; } if(needBaidu!==true){ needBaidu=false; } alert(LizardLite.requestCityInfo); LizardLite.requestCityInfo (callback, error, posCallback, posError, isAccurate, cityCallBack, cityErrorCallBack,isForceLocate,needBaidu); }, requestCityInfo2:function(params){ var callback=params.callback; if(callback && typeof callback !="function"){ console.log("callback is not a function in requestCityInfo"); return; } LizardLite.requestCityInfo (callback); }, requestGeographic:function (params){ if(!params){ return; } var onSuccess=params.onSuccess; var onError=params.onError; var timeOut=20000; //超时 if(typeof onSuccess !="function"){ console.log(" onSuccess is not a function in requestGeographic"); return; } if(typeof onError !="function"){ console.log(" onError is not a function in requestGeographic"); return; } if(params.timeOut>0){ timeOut=params.timeOut; } LizardLite.requestGeographic(onSuccess,onError,timeOut); } }; function getQueryParams() { var paramListObj={}; var list=window.location.href.split('?'); if(list.length>1){ var paramList=list[1].split('&'); for (var i = 0; i < paramList.length; i++) { var key = paramList[i].split("=")[0]; var value = paramList[i].split("=")[1]; paramListObj[key]=value; }; } return paramListObj; } var pubsub = { topics : {}, subUid : -1, //发布消息 publish:function(topic, args) { if(!this.topics[topic]) {return;} var subs = this.topics[topic], len = subs.length; while(len--) { subs[len].func(topic, args); } return this; }, //订阅事件 subscribe:function(topic, func) { this.topics[topic] = this.topics[topic] ? this.topics[topic] : []; var token = (++this.subUid).toString(); this.topics[topic].push({ token : token, func : func }); return token; }, //取消订阅 off:function(msgname,token){ for(var name in this.topics ){ var msgObj=this.topics[name]; for(var i=0;i<msgObj.length;i++){ if(msgObj[i].token==token){ msgObj.splice(i,1); break; } } } } }; function isArray(object){ return object && typeof object==='object' && Array == object.constructor; } var localStorage={ set:function(key,value){ if(typeof value=="object"){ value=JSON.stringify(value); } window.localStorage.setItem(key,value); }, get:function(key){ try{ return JSON.parse(window.localStorage.getItem(key)); } catch(ex){ console.log(ex); return window.localStorage.getItem(key); } }, remove:function(key){ window.localStorage.removeItem(key); }, clear:function(){ window.localStorage.clear(); } }; var cookieStorage = { //写cookies set: function(name, value, time) { if(typeof value=="object"){ value=JSON.stringify(value); } var strsec = this.getsec(time); var exp = new Date(); exp.setTime(exp.getTime() + strsec * 1); document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString(); }, //读取cookies get: function(name) { var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)"); var isExist=false; if (document.cookie.match(reg)) { arr=document.cookie.match(reg); isExist=true; } if(!isExist){ return null; } try { return JSON.parse(unescape(arr[2])); } catch (e) { return unescape(arr[2]); } return null; }, //删除cookies remove: function (name,domain,path) { var exp = new Date(); exp.setTime(exp.getTime() - 1000 * 60 * 60 * 24 * 365); var cval = this.getCookie(name); if (cval != null) { if(Horse.validate.isNull(path)){ path="/"; } if(Horse.validate.isNull(domain)){ document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString(); return; } document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString() + ";domain=" + domain + ";path=" + path; } }, getsec: function(str) { var str1 = str.substring(1, str.length) * 1; var str2 = str.substring(0, 1); if (str2 == "s") { return str1 * 1000; } if (str2 == "h") { return str1 * 60 * 60 * 1000; } if (str2 == "d") { return str1 * 24 * 60 * 60 * 1000; } } }; var touchEvent = function(params) { var el = params.el; var isPreventDefault=params.isPreventDefault; var touchLeft = params.touchLeft; var touchRight = params.touchRight; var touchBottom = params.touchBottom; var touchTop = params.touchTop; var startx; var starty; var endx; var endy; function cons() { var l = Math.abs(startx - endx); var h = Math.abs(starty - endy); if (l > h) { if (startx > endx) { touchLeft && typeof touchLeft == "function" && touchLeft(); } else { touchRight && typeof touchRight == "function" && touchRight(); } } else { if (starty > endy) { touchTop && typeof touchTop == "function" && touchTop(); } else { touchBottom && typeof touchBottom == "function" && touchBottom(); } } } el.addEventListener('touchstart', function (e) { if(isPreventDefault){ e.preventDefault(); } var touch = e.changedTouches; startx = touch[0].clientX; starty = touch[0].clientY; }); el.addEventListener('touchend', function (e) { var touch = e.changedTouches; endx = touch[0].clientX; endy = touch[0].clientY; cons(); }); }; //滚动条在Y轴上的滚动距离 function getScrollTop(){   var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;   if(document.body){     bodyScrollTop = document.body.scrollTop;   }   if(document.documentElement){     documentScrollTop = document.documentElement.scrollTop;   }   scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;   return scrollTop; }; //文档的总高度 function getScrollHeight(){   var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;   if(document.body){     bodyScrollHeight = document.body.scrollHeight;   }   if(document.documentElement){     documentScrollHeight = document.documentElement.scrollHeight;   }   scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;   return scrollHeight; }; //浏览器视口的高度 function getWindowHeight(){   var windowHeight = 0;   if(document.compatMode == "CSS1Compat"){     windowHeight = document.documentElement.clientHeight;   }else{     windowHeight = document.body.clientHeight;   }   return windowHeight; }; module.exports = { isInApp : isInApp, isInWechat : isInWechat, isInIOS : isInIOS, getEnv : getEnv, domReady : domReady, ready : ready, captcha : function(){captcha.apply(null, arguments)}, showLoading : function(){loading.show()}, hideLoading : function(){loading.hide()}, jump : function(){jump.apply(null, arguments)}, back : back, setShare : setShare, appShare : appShare, setShareInApp:setShareInApp, setShareInWeChat:setShareInWeChat, setTitle : setTitle, weixinGlobal : weixinGlobal, isLogin : isLogin, login : login, Model : Model, getAlliance : getAlliance, getVID : getVID, base64 : base64, activateApp : activateApp, formatDate : formatDate, getQuery : getQuery, getRoute : getRoute, list : eventEmitter.list, on : eventEmitter.on, trigger : eventEmitter.trigger, off : eventEmitter.off, requestGeographic:locationServer.requestGeographic, requestCityInfo:locationServer.requestCityInfo, requestCityInfo2:locationServer.requestCityInfo2, getQueryParams:getQueryParams, pubsub : pubsub, isArray : isArray, localStorage : localStorage, cookieStorage: cookieStorage, touchEvent : touchEvent, getScrollTop : getScrollTop, getScrollHeight:getScrollHeight, getWindowHeight:getWindowHeight };