main.js 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488
  1. window.addEventListener('pageshow', function(e) {
  2. // 通过persisted属性判断是否存在 BF Cache
  3. if(e.persisted) {
  4. location.reload();
  5. }
  6. });
  7. var domanUrl = "//" + window.location.host;
  8. var base_path = "//h5.iamberry.com/iamberry";
  9. var web_url_path = "//h5.iamberry.com";
  10. //var base_path = "/iamberry";
  11. //ajax loading
  12. $(window).ajaxStart(function(){
  13. $(".covers").show();
  14. });
  15. $(window).ajaxStop(function(){
  16. $(".covers").hide();
  17. });
  18. mui.each(document.querySelectorAll('#footer-bar-tab .mui-tab-item'), function(index, el) {
  19. el.addEventListener('tap', function() {
  20. switch(index) {
  21. case 0:
  22. mui.openWindow({
  23. url: 'index.html'
  24. });
  25. break;
  26. case 1:
  27. mui.openWindow({
  28. url: 'shopping-cart.html'
  29. });
  30. break;
  31. case 2:
  32. mui.openWindow({
  33. url: 'order-list.html'
  34. });
  35. break;
  36. case 3:
  37. mui.openWindow({
  38. url: 'my-center.html'
  39. });
  40. break;
  41. default:
  42. break;
  43. }
  44. }, false);
  45. });
  46. function time_before(t){
  47. var minute=1000*60;
  48. var hour=minute*60;
  49. var day=hour*24;
  50. var halfamonth=day*15;
  51. var month=day*30;
  52. var now=new Date().getTime();
  53. var diffValue=now-new Date().setTime(t);
  54. var monthC=diffValue/month;
  55. var weekC=diffValue/(7*day);
  56. var dayC=diffValue/day;
  57. var hourC=diffValue/hour;
  58. var minC=diffValue/minute;
  59. if(monthC>=1){
  60. result=""+parseInt(monthC)+"月前";
  61. }else if(weekC>=1){
  62. result=""+parseInt(weekC)+"周前";
  63. }else if(dayC>=1){
  64. result=""+parseInt(dayC)+"天前";
  65. }else if(hourC>=1){
  66. result=""+parseInt(hourC)+"小时前";
  67. }else if(minC>=2){
  68. result=""+parseInt(minC)+"分钟前";
  69. }else{
  70. result="刚刚";
  71. }
  72. return result;
  73. };
  74. //封装document.getElementById
  75. function dc(objectid) {
  76. if(document.getElementById && document.getElementById(objectid)) {
  77. return document.getElementById(objectid);// w3c dom
  78. } else if (document.all && document.all(objectid)) {
  79. return document.all(objectid);// msie 4 dom
  80. } else if (document.layers && document.layers[objectid]) {
  81. return document.layers[objectid];// nn 4 dom.. note: this won't find nested layers
  82. } else {
  83. return false;
  84. }
  85. };
  86. //生成随机字符,n长度
  87. function generateMixed(n) {
  88. var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];
  89. var res = "";
  90. for(var i = 0; i < n ; i ++) {
  91. var id = Math.ceil(Math.random()*35);
  92. res += chars[id];
  93. }
  94. return res;
  95. }
  96. var jsUrlHelper = {
  97. getUrlParam : function(url, ref) {
  98. var str = "";
  99. // 如果不包括此参数
  100. if (url.indexOf(ref) == -1)
  101. return null;
  102. str = url.substr(url.indexOf('?') + 1);
  103. arr = str.split('&');
  104. for (i in arr) {
  105. var paired = arr[i].split('=');
  106. if (paired[0] == ref) {
  107. return paired[1];
  108. }
  109. }
  110. return null;
  111. },
  112. putUrlParam : function(url, ref, value) {
  113. // 如果没有参数
  114. if (url.indexOf('?') == -1)
  115. return url + "?" + ref + "=" + value;
  116. // 如果不包括此参数
  117. if (url.indexOf(ref) == -1)
  118. return url + "&" + ref + "=" + value;
  119. var arr_url = url.split('?');
  120. var base = arr_url[0];
  121. var arr_param = arr_url[1].split('&');
  122. for (i = 0; i < arr_param.length; i++) {
  123. var paired = arr_param[i].split('=');
  124. if (paired[0] == ref) {
  125. paired[1] = value;
  126. arr_param[i] = paired.join('=');
  127. break;
  128. }
  129. }
  130. return base + "?" + arr_param.join('&');
  131. },
  132. delUrlParam : function(url, ref) {
  133. // 如果不包括此参数
  134. if (url.indexOf(ref) == -1)
  135. return url;
  136. var arr_url = url.split('?');
  137. var base = arr_url[0];
  138. var arr_param = arr_url[1].split('&');
  139. var index = -1;
  140. for (i = 0; i < arr_param.length; i++) {
  141. var paired = arr_param[i].split('=');
  142. if (paired[0] == ref) {
  143. index = i;
  144. break;
  145. }
  146. }
  147. if (index == -1) {
  148. return url;
  149. } else {
  150. arr_param.splice(index, 1);
  151. return base + "?" + arr_param.join('&');
  152. }
  153. }
  154. };
  155. //获取url参数
  156. function getParam(paramName) {
  157. paramValue = "", isFound = !1;
  158. if(this.location.search.indexOf("?") == 0 && this.location.search.indexOf("=") > 1) {
  159. arrSource = unescape(this.location.search).substring(1, this.location.search.length).split("&"), i = 0;
  160. while(i < arrSource.length && !isFound) {
  161. arrSource[i].indexOf("=") > 0 && arrSource[i].split("=")[0].toLowerCase() == paramName.toLowerCase() && (paramValue = arrSource[i].split("=")[1], isFound = !0), i++
  162. }
  163. }
  164. return paramValue == "" && (paramValue = null), paramValue
  165. };
  166. //回去url参数
  167. function getQueryString(name) {
  168. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  169. var r = window.location.search.substr(1).match(reg);
  170. if (r != null) return unescape(r[2]); return null;
  171. }
  172. // 对Date的扩展,将 Date 转化为指定格式的String
  173. // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
  174. // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
  175. // 例子:
  176. // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
  177. // (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
  178. Date.prototype.format = function(fmt)
  179. { //author: meizz
  180. var o = {
  181. "M+" : this.getMonth()+1, //月份
  182. "d+" : this.getDate(), //日
  183. "h+" : this.getHours(), //小时
  184. "m+" : this.getMinutes(), //分
  185. "s+" : this.getSeconds(), //秒
  186. "q+" : Math.floor((this.getMonth()+3)/3), //季度
  187. "S" : this.getMilliseconds() //毫秒
  188. };
  189. if(/(y+)/.test(fmt))
  190. fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
  191. for(var k in o)
  192. if(new RegExp("("+ k +")").test(fmt))
  193. fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
  194. return fmt;
  195. }
  196. //计算月份差
  197. function getMonthNumber(date1,date2){
  198. //默认格式为"2010-01-01",根据自己需要改格式和方法
  199. var d1=date1.replaceAll("-",''),d2=date2.replaceAll("-",'');
  200. var year1 = d1.substring(0,4);
  201. var year2 = d2.substring(0,4);
  202. var month1 = d1.substring(6,4);
  203. var month2 = d2.substring(6,4);
  204. var len=parseInt((year2-year1)*12+(month2-month1));
  205. return len;
  206. }
  207. //替换所有要替换的文字
  208. String.prototype.replaceAll = function (str1,str2){
  209. var str = this;
  210. var result = str.replace(eval("/"+str1+"/gi"),str2);
  211. return result;
  212. }
  213. /**
  214. ** 加法函数,用来得到精确的加法结果
  215. ** 说明:javascript的加法结果会有误差,在两个浮点数相加的时候会比较明显。这个函数返回较为精确的加法结果。
  216. ** 调用:accAdd(arg1,arg2)
  217. ** 返回值:arg1加上arg2的精确结果
  218. **/
  219. function accAdd(arg1, arg2) {
  220. var r1, r2, m, c;
  221. try {
  222. r1 = arg1.toString().split(".")[1].length;
  223. }
  224. catch (e) {
  225. r1 = 0;
  226. }
  227. try {
  228. r2 = arg2.toString().split(".")[1].length;
  229. }
  230. catch (e) {
  231. r2 = 0;
  232. }
  233. c = Math.abs(r1 - r2);
  234. m = Math.pow(10, Math.max(r1, r2));
  235. if (c > 0) {
  236. var cm = Math.pow(10, c);
  237. if (r1 > r2) {
  238. arg1 = Number(arg1.toString().replace(".", ""));
  239. arg2 = Number(arg2.toString().replace(".", "")) * cm;
  240. } else {
  241. arg1 = Number(arg1.toString().replace(".", "")) * cm;
  242. arg2 = Number(arg2.toString().replace(".", ""));
  243. }
  244. } else {
  245. arg1 = Number(arg1.toString().replace(".", ""));
  246. arg2 = Number(arg2.toString().replace(".", ""));
  247. }
  248. return (arg1 + arg2) / m;
  249. }
  250. //给Number类型增加一个add方法,调用起来更加方便。
  251. Number.prototype.add = function (arg) {
  252. return accAdd(arg, this);
  253. };
  254. /**
  255. ** 除法函数,用来得到精确的除法结果
  256. ** 说明:javascript的除法结果会有误差,在两个浮点数相除的时候会比较明显。这个函数返回较为精确的除法结果。
  257. ** 调用:accDiv(arg1,arg2)
  258. ** 返回值:arg1除以arg2的精确结果
  259. **/
  260. function accDiv(arg1, arg2) {
  261. var t1 = 0, t2 = 0, r1, r2;
  262. try {
  263. t1 = arg1.toString().split(".")[1].length;
  264. }
  265. catch (e) {
  266. }
  267. try {
  268. t2 = arg2.toString().split(".")[1].length;
  269. }
  270. catch (e) {
  271. }
  272. with (Math) {
  273. r1 = Number((arg1 + "").replace(".", ""));
  274. r2 = Number((arg2 + "").replace(".", ""));
  275. return (r1 / r2) * pow(10, t2 - t1);
  276. }
  277. }
  278. //给Number类型增加一个div方法,调用起来更加方便。
  279. Number.prototype.div = function (arg) {
  280. return accDiv(this, arg);
  281. };
  282. /**
  283. ** 乘法函数,用来得到精确的乘法结果
  284. ** 说明:javascript的乘法结果会有误差,在两个浮点数相乘的时候会比较明显。这个函数返回较为精确的乘法结果。
  285. ** 调用:accMul(arg1,arg2)
  286. ** 返回值:arg1乘以 arg2的精确结果
  287. **/
  288. function accMul(arg1, arg2) {
  289. var m = 0, s1 = arg1.toString(), s2 = arg2.toString();
  290. try {
  291. m += s1.split(".")[1].length;
  292. }
  293. catch (e) {
  294. }
  295. try {
  296. m += s2.split(".")[1].length;
  297. }
  298. catch (e) {
  299. }
  300. return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m);
  301. }
  302. // 给Number类型增加一个mul方法,调用起来更加方便。
  303. Number.prototype.mul = function (arg) {
  304. return accMul(arg, this);
  305. };
  306. function formatDate(now) {
  307. now = new Date(now);
  308. var year=now.getFullYear();
  309. var month=now.getMonth()+1;
  310. if(month<10){
  311. month="0"+month;
  312. }
  313. var date=now.getDate();
  314. return year+"年"+month+"月"+date+"日";
  315. }
  316. function formatTime(msd) {
  317. var time = parseFloat(msd) /1000;
  318. if (null!= time &&""!= time) {
  319. if (time >60&& time <60*60) {
  320. time = parseInt(time /60.0) +"分";
  321. // time = parseInt(time /60.0) +"分钟"+ parseInt((parseFloat(time /60.0) -
  322. // parseInt(time /60.0)) *60) +"秒";
  323. }else if (time >=60*60&& time <60*60*24) {
  324. // time = parseInt(time /3600.0) +"小时"+ parseInt((parseFloat(time /3600.0) -
  325. // parseInt(time /3600.0)) *60) +"分钟"+
  326. // parseInt((parseFloat((parseFloat(time /3600.0) - parseInt(time /3600.0)) *60) -
  327. // parseInt((parseFloat(time /3600.0) - parseInt(time /3600.0)) *60)) *60) +"秒";
  328. time = parseInt(time /3600.0) +"时"+ parseInt((parseFloat(time /3600.0) -
  329. parseInt(time /3600.0)) *60) +"分";
  330. }else {
  331. time = parseInt(time) +"分";
  332. }
  333. }else{
  334. time = "0分";
  335. }
  336. return time;
  337. }
  338. function formatMinutes(msd) {
  339. // 参数msd (秒)
  340. var time = parseFloat(msd);
  341. if (null!= time && ""!= time) {
  342. if (time >0&& time <60*60) {
  343. time = parseInt(time /60.0) +"分";
  344. }else{
  345. time = parseInt(time /3600.0) +"时"+ parseInt((parseFloat(time /3600.0) -
  346. parseInt(time /3600.0)) *60) +"分";
  347. }
  348. }else{
  349. time = "0分";
  350. }
  351. return time;
  352. }
  353. function formatDay(now) {
  354. now = new Date(now);
  355. var month=now.getMonth()+1;
  356. if(month<10){
  357. month="0"+month;
  358. }
  359. var date=now.getDate();
  360. if(date<10){
  361. date="0"+date;
  362. }
  363. return month+"-"+date;
  364. }
  365. function formatDateFull(now) {
  366. now = new Date(now);
  367. var year=now.getFullYear();
  368. var month=now.getMonth()+1;
  369. if(month<10){
  370. month="0"+month;
  371. }
  372. var date=now.getDate();
  373. if(date<10){
  374. date="0"+date;
  375. }
  376. return year+"-"+month+"-"+date;
  377. }
  378. function formatDateMinute(now) {
  379. now = new Date(now);
  380. var year=now.getFullYear();
  381. var month=now.getMonth()+1;
  382. if(month<10){
  383. month="0"+month;
  384. }
  385. var date=now.getDate();
  386. if(date<10){
  387. date="0"+date;
  388. }
  389. var hour=now.getHours();
  390. if(hour<10){
  391. hour="0"+hour;
  392. }
  393. var Minute=now.getMinutes();
  394. if(Minute<10){
  395. Minute="0"+Minute;
  396. }
  397. return year+"-"+month+"-"+date+" "+hour+":"+Minute;
  398. }
  399. function int_for_time(obj){
  400. return obj+":00";
  401. }
  402. //替换指定传入参数的值,paramName为参数,replaceWith为新值
  403. function replaceParamVal(paramName,replaceWith) {
  404. var oUrl = this.location.href.toString();
  405. var re=eval('/('+ paramName+'=)([^&]*)/gi');
  406. var nUrl = oUrl.replace(re,paramName+'='+replaceWith);
  407. window.history.pushState({},0,nUrl);
  408. }
  409. function isEmptyObject(e) {
  410. var t;
  411. for (t in e)
  412. return !1;
  413. return !0
  414. }
  415. function gotoTop() {
  416. mui('.my-scroll-wrapper').scroll().scrollTo(0,0,500);//500毫秒滚动到顶
  417. //$(".mui-scroll").css({"transform":"translate3d(0px, 0px, 0px) translateZ(0px)","transition-duration":"100ms"});
  418. };
  419. function gotoBottom(){
  420. mui('.my-scroll-wrapper').scroll().scrollToBottom();//500毫秒滚动到底部
  421. }
  422. $(document).on('tap', '.icon-shouye', function() {
  423. location.href="index.html";
  424. });
  425. //回到顶部
  426. function gotoTop(acceleration, stime) {
  427. acceleration = acceleration || 0.1;
  428. stime = stime || 10;
  429. var x1 = 0,
  430. y1 = 0,
  431. x2 = 0,
  432. y2 = 0,
  433. x3 = 0,
  434. y3 = 0;
  435. if (document.documentElement) {
  436. x1 = document.documentElement.scrollLeft || 0;
  437. y1 = document.documentElement.scrollTop || 0;
  438. }
  439. if (document.body) {
  440. x2 = document.body.scrollLeft || 0;
  441. y2 = document.body.scrollTop || 0;
  442. }
  443. var x3 = window.scrollX || 0;
  444. var y3 = window.scrollY || 0;
  445. var x = Math.max(x1, Math.max(x2, x3));
  446. var y = Math.max(y1, Math.max(y2, y3));
  447. var speeding = 1 + acceleration;
  448. window.scrollTo(Math.floor(x / speeding), Math.floor(y / speeding));
  449. if (x > 0 || y > 0) {
  450. var run = "gotoTop(" + acceleration + ", " + stime + ")";
  451. window.setTimeout(run, stime);
  452. }
  453. }