exchangePhoneActivity.html 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
  6. <title>免费兑换云机</title>
  7. <link rel="icon" href="../static/img/favicon2.ico" type="img/x-ico">
  8. <link rel="stylesheet" href="../static/js/vender/bootstrap/css/bootstrap.min.css">
  9. <link rel="stylesheet" href="../static/js/vender/toastr/toastr.min.css">
  10. <link rel="stylesheet" href="../static/css/exchangePhoneActivity.css">
  11. <link rel="stylesheet" href="../static/css/verify.css">
  12. <script src="../static/js/vender/jquery-3.4.1.min.js"></script>
  13. <script src="../static/js/vender/verify.js"></script>
  14. <script src="../static/js/vender/toastr/toastr.min.js"></script>
  15. <script src="../static/js/vender/config.js"></script>
  16. <script src="../static/js/vender/crypto-js.js"></script>
  17. <script src="../static/js/vender/uuid.js"></script>
  18. <script src="../static/js/vender/ase.js"></script>
  19. </head>
  20. <body>
  21. <div id="mpanel2"></div>
  22. <div id="form-btn"></div>
  23. <div class="containers">
  24. <div class="banner-wrap">
  25. <div class="time_lines">
  26. <img class="time_line" src="../static/img/exchangePhoneActivity/time_line_left.png">
  27. <div class="time-text">活动时间:2022年3月1日-3月31日</div>
  28. <img class="time_line" src="../static/img/exchangePhoneActivity/time_line_right.png">
  29. </div>
  30. <div class="logo-wrap">
  31. <img class="logo" src="../static/img/exchangePhoneActivity/logo.png">
  32. </div>
  33. <div class="title-wrap">
  34. <img class="titles" src="../static/img/exchangePhoneActivity/title.png">
  35. </div>
  36. <div class="tip-wrap">
  37. <img class="tips" src="../static/img/exchangePhoneActivity/tips.png">
  38. </div>
  39. <div class="logo-wrap">
  40. <img class="logo" src="../static/img/exchangePhoneActivity/logo.png">
  41. </div>
  42. <img class="banner-img" src="../static/img/exchangePhoneActivity/banner.png">
  43. <div class="main-wrap">
  44. <div class="middle-wrap">
  45. <div class="select-wrap">
  46. <div class="select left-select">
  47. <img class="selected" src="../static/img/exchangePhoneActivity/selected.png">
  48. <div>某手指用户</div>
  49. </div>
  50. <div class="select right-select">
  51. <img class="selected" src="../static/img/exchangePhoneActivity/no-selected.png">
  52. <div>新人福利</div>
  53. </div>
  54. </div>
  55. <div class="ipt-row">
  56. <img class="img phone-img" src="../static/img/exchangePhoneActivity/phone.png">
  57. <input class="phone-ipt ipt" type="number" placeholder="请输入11位手机号码" placeholder-style="color: #CCCCCC" />
  58. </div>
  59. <div class="phone-tip">*账号格式不正确,请重新输入!</div>
  60. <div class="ipt-row">
  61. <img class="img code-img" src="../static/img/exchangePhoneActivity/code.png">
  62. <input class="code-ipt ipt" type="number" placeholder="请输入验证码" />
  63. <div class="get-code">获取验证码</div>
  64. </div>
  65. <div class="code-tip">*请输入正确验证码!</div>
  66. <div class="btns">
  67. <img class="btn-img" src="../static/img/exchangePhoneActivity/btn.png">
  68. </div>
  69. </div>
  70. </div>
  71. </div>
  72. <div class="bottom-wrap">
  73. <div class="procedure-wrap">
  74. <img class="procedure-img" src="../static/img/exchangePhoneActivity/procedure.png">
  75. </div>
  76. <div class="rule-wrap">
  77. <img class="rule-img" src="../static/img/exchangePhoneActivity/rule.png">
  78. <div class="rule-list">
  79. <div class="rule-point">1.新用户可通过手机号注册申请免费获得赠送云机及购机折扣券个人专属礼包</div>
  80. <div class="rule-point">2.购机折扣券为限时折扣券,请注意使用时间</div>
  81. <div class="rule-point">3.购机折扣券适配全部机型,同一账号仅可获得一种类型礼包</div>
  82. <div class="rule-point">4.所填写的手机号码,若未注册双子星将默认自动注册双子星账号</div>
  83. <div class="rule-point">其它说明:</div>
  84. <div class="rule-point">1.优惠券的可使用范围有限制,请以券面提示为准,用户可在下单时选择该订单的可用优惠券的卡券页面中查看已领取的优惠券的详细情况。具体适用范围以商品详情页提示内容为准。无法使用优惠券的商品,在商品详情页将不展示优惠券;同一笔订单中,不同类型的券可以叠加,同一类型的券,仅可选择一张使用。</div>
  85. <div class="rule-point">2.活动平台有权对用户申请订单进行审核。如活动平台认定订单存在异常(包括任何形式的用户作弊行为),有权取消订单,订单取消后优惠券自动失效。</div>
  86. <div class="rule-point">法律声明:</div>
  87. <div class="rule-point">1. 同一用户是指使用同一帐号、同一手机号、同一设备或同一提现账户的用户。上述与用户身份相关的信息,其中任意一项或数项相同,或通过特定标记形成关联,或活动平台有合理理由认为存在关联的,都视为同一个用户。部分参与方式中,对用户帐号有限制,同一个设备最多可使用一个帐号参与活动,同一帐号最多可以使用一台设备参与活动;用户使用多个帐号在同一个设备上登录的,视为同一用户,仅有一个帐号可参与本活动。</div>
  88. <div class="rule-point">2. 用户不得采取任何不正当或作弊的违规手段参与本活动,一经发现,活动平台有权限制或取消用户参与活动的资格,有权取消奖励、追讨用户已领取的奖励(或同等价值的现金)。活动平台有权对违规用户采取限制登录、封禁帐号、限制提现的措施,并保留追究用户其他法律责任的权利。违规手段包括但不仅限于:</div>
  89. <div class="rule-point">2.1 通过不正当手段参与活动。例如使用模拟器、插件、软件外挂、物理外挂等违规工具参与活动,与其他用户串通采取不正当手段谋取活动奖励等;</div>
  90. <div class="rule-point">2.2 扰乱本活动秩序。例如使用多个帐号参与活动,修改个人位置信息,篡改设备数据,买卖用户帐号,买卖活动权益,买卖领奖资格等;</div>
  91. <div class="rule-point">2.3 干扰活动平台正常运营。例如批量注册用户帐号,违规使用用户帐号,采用技术手段对活动平台进行干扰、破坏、修改或施加其他影响;</div>
  92. <div class="rule-point">2.4 利用本活动进行违法犯罪。例如利用本活动洗钱、套现、诈骗,或开展其他违反国家法律法规的活动;</div>
  93. <div class="rule-point">2.5 其他违反法律法规,违背诚实信用原则,违反活动规则,或活动平台认为的不正当手段。</div>
  94. <div class="rule-point">3. 如因以下原因导致活动不能正常举办、用户无法参与或参与失败、活动奖励发放错误等,活动平台/本活动有权暂停或取消活动,且不承担任何法律责任或不利后果:</div>
  95. <div class="rule-point">3.1 不可抗力,包括但不仅限于自然灾害,有权机关的政策要求,政府机关指令,重大疫情影响等不能预见、不可避免、不能克服的情况;</div>
  96. <div class="rule-point">3.2 活动平台发生技术故障,本活动受到不正当技术手段干扰、破坏、篡改或被施加其他影响,第三方平台限制活动平台或本活动,或其他导致本活动的正常秩序受到干扰的情况;</div>
  97. <div class="rule-point">3.3 用户所在地区网络故障、支付平台故障、电信运营商故障等非活动平台所能控制的情况。</div>
  98. <div class="rule-point">4. 活动平台不支持用户通过众包或类似方式参与活动。如用户因此遭受经济损失的,活动平台不承担任何赔偿或补偿责任。</div>
  99. <div class="rule-point">5. 商品展示的划线价格为参考价,该价格可能是品牌专柜标价、商品吊牌价或品牌供应商提供的指导价、建议零售价或该商品在电商平台及/或其他渠道曾展示过的销售价,并非原价;由于地区等差异性和市场行情波动,品牌专柜标价、商品吊牌价等可能会与电商平台展示的不一致,该价格仅供用户参考。</div>
  100. <div class="rule-point">6. 若由于用户自身原因(包括但不限于参与方式不符合活动规则、未按活动规则要求提供收件地址、操作不当造成产品功能故障等)导致无法实际享有奖励的,视为用户自愿放弃奖励,活动平台将不会也无义务给予任何形式的补偿。</div>
  101. <div class="rule-point">7. 任何第三方以活动平台名义从事欺诈行为造成用户损失的,活动平台无需为此承担法律责任。</div>
  102. <div class="rule-point">8. 活动平台和电商平台的《用户协议》《隐私政策》(以手机客户端对应名称为准)及其他规范同样适用于本活动,本活动规则与活动平台和电商平台《用户协议》《隐私政策》及其他规范相冲突的,以本活动规则为准。本活动规则未约定的内容,以活动平台和电商平台的《用户协议》《隐私政策》及其他平台规范为准。</div>
  103. <div class="rule-point">9. 在法律法规允许的范围内,活动平台有权对本活动规则进行变动或调整,相关变动或调整将公布在活动规则页面上,并于公布时即时生效,用户继续参与活动则视为同意并接受变动或者调整后的活动规则。如果用户拒绝活动规则的变更或者调整,请放弃参与变更后的活动。</div>
  104. </div>
  105. </div>
  106. </div>
  107. <div class="copy-mask">
  108. <div class="copy-dialog">
  109. <div class="mask-title-wrap">
  110. <div class="mask-title-texts">云手机3天套餐</div>
  111. <div class="mask-title-texts">免费用及专享优惠券</div>
  112. </div>
  113. <div class="mask-btn-wrap">
  114. <img class="mask-btn" src="../static/img/exchangePhoneActivity/mask-btn.png" />
  115. </div>
  116. <div class="mask-tips">您可在 <span class="mask-card">[我的-卡券]</span> 中查看使用优惠券</div>
  117. <img class="close" src="img/close.png" />
  118. </div>
  119. </div>
  120. <div class="ios-mask">
  121. <div class="ios-dialog">
  122. <div class="mask-title-wrap mask-title-wrap2">
  123. <div class="mask-title-texts">提交成功,正在加速审核</div>
  124. </div>
  125. <div class="mask-tips mask-tips2">审核成功后会</div>
  126. <div class="mask-tips mask-tips3">以短信的形式通知您</div>
  127. <div class="mask-btn-wrap mask-btn-wrap2">
  128. <img class="mask-btn" src="../static/img/exchangePhoneActivity/mask-btn2.png" />
  129. </div>
  130. <img class="close1" src="img/close.png" />
  131. </div>
  132. </div>
  133. </div>
  134. <script>
  135. toastr.options.positionClass = 'toast-center-center';
  136. toastr.options.timeOut = '1500';
  137. </script>
  138. <script type="text/javascript">
  139. // var baseUrl = 'https://test.androidscloud.com'
  140. let timer, flag = true;
  141. let time = 60, codeTimer = null, enable = false, isStart = false, changePhoneType = 2, phone = '', code = '', captchaVerification = '';
  142. var url = window.location.href;
  143. url = url.split('/')
  144. var loc = window.location.search,
  145. n1 = loc.length,//地址的总长度
  146. n2 = loc.indexOf("="),//取得=号的位置
  147. id = loc.substr(n2 + 1, n1 - n2),//从=号后面的内容
  148. u = navigator.userAgent,
  149. ua = navigator.userAgent.toLowerCase(),
  150. isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
  151. isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端
  152. var html = document.documentElement;
  153. var imgWidth = html.getBoundingClientRect().width / 750 * 400 + 'px';
  154. var imgHeight = html.getBoundingClientRect().width / 750 * 200 + 'px';
  155. var barHeight = html.getBoundingClientRect().width / 750 * 70 + 'px';
  156. getConfig();
  157. function captchaVerificationHandle(){
  158. $.ajax({
  159. url: baseUrl + '/api/user/v1/client/regist/changePhone',
  160. type: 'post',
  161. data: JSON.stringify({
  162. changePhoneType: changePhoneType,
  163. phone: phone,
  164. code: code
  165. }),
  166. contentType: "application/json",
  167. dataType: 'json',
  168. cache: false,
  169. success: function (res) {
  170. console.log(res.status)
  171. if (res.status === 2 || res.status === 11) {
  172. $('#mpanel2').eq(0).text('');
  173. validate(); // 生成验证码
  174. setTimeout(() => {
  175. document.getElementById('form-btn').click();
  176. },500)
  177. } else if(res.status === 0) {
  178. timerHandle('back');
  179. if(changePhoneType == 1){
  180. $('.copy-dialog').animate({top: '3.8rem'},"fast");
  181. $('.copy-mask').show();
  182. }else{
  183. $('.ios-dialog').animate({top: '5.75rem'},"fast");
  184. $('.ios-mask').show();
  185. }
  186. document.documentElement.style.overflow='hidden';
  187. } else {
  188. toastr.error(res.msg);
  189. }
  190. }
  191. })
  192. }
  193. //点击获取验证码
  194. $('.get-code')[0].addEventListener('click',() => {
  195. if(isStart){
  196. return
  197. }
  198. if(!enable){
  199. toastr.error(`活动暂未开始!`);
  200. return
  201. }
  202. let phone = $('.phone-ipt').eq(0).val();
  203. phone = phone.replace(/\s+/g,"");
  204. let phoneFlag = checkPhone();
  205. if(!phoneFlag || phone.length < 11){
  206. $('.phone-tip').eq(0).css('display', 'block');
  207. return false
  208. }
  209. getCode();
  210. },false);
  211. // 获取验证码接口
  212. function getCode() {
  213. let phone = $('.phone-ipt').eq(0).val();
  214. phone = phone.replace(/\s+/g,"");
  215. $.ajax({
  216. url: baseUrl + '/api/user/v1/phone/v_code/send',
  217. type: 'post',
  218. data: JSON.stringify({
  219. type: 'change_phone',
  220. phone: phone
  221. }),
  222. contentType: "application/json",
  223. dataType: 'json',
  224. cache: false,
  225. success: function (res) {
  226. if(res.status == 0){
  227. toastr.error(`验证码已发送`);
  228. isStart = true;
  229. $('.get-code').eq(0).text('60s');
  230. $('.get-code')[0].className = 'get-code get-code-active';
  231. codeTimer = setInterval(() => {
  232. time--;
  233. if(time > 0){
  234. $('.get-code').eq(0).text(`${time}s`);
  235. }else{
  236. timerHandle();
  237. }
  238. }, 1000);
  239. }else{
  240. toastr.error(res.msg);
  241. }
  242. }
  243. });
  244. }
  245. // 点击左边选择项
  246. $('.left-select')[0].addEventListener('click',(e) => {
  247. $('.selected')[0].src = '../static/img/exchangePhoneActivity/selected.png';
  248. $('.selected')[1].src = '../static/img/exchangePhoneActivity/no-selected.png';
  249. changePhoneType = 2;
  250. })
  251. // 点击右边选择项
  252. $('.right-select')[0].addEventListener('click',(e) => {
  253. $('.selected')[0].src = '../static/img/exchangePhoneActivity/no-selected.png';
  254. $('.selected')[1].src = '../static/img/exchangePhoneActivity/selected.png';
  255. changePhoneType = 1;
  256. })
  257. //点击立即领取按钮
  258. $('.btns')[0].addEventListener('click',() => {
  259. if(!enable){
  260. toastr.error(`活动暂未开始!`);
  261. return
  262. }
  263. phone = $('.phone-ipt').eq(0).val();
  264. phone = phone.replace(/\s+/g,"");
  265. code = $('.code-ipt').eq(0).val();
  266. code = code.replace(/\s+/g,"");
  267. let phoneFlag = checkPhone();
  268. if(!phoneFlag || phone.length < 11){
  269. $('.phone-tip').eq(0).css('display', 'block');
  270. return false
  271. }
  272. let codeFlag = checkCode();
  273. if(!codeFlag){
  274. $('.code-tip').eq(0).css('display', 'block');
  275. return false
  276. }
  277. if(code.length < 6){
  278. $('.code-tip').eq(0).css('display', 'block');
  279. return false;
  280. }
  281. //图片验证弹窗弹出
  282. captchaVerificationHandle();
  283. },false);
  284. //提交表单内容
  285. function submit(){
  286. $.ajax({
  287. url: baseUrl + '/api/user/v1/client/regist/changePhone',
  288. type: 'post',
  289. data: JSON.stringify({
  290. changePhoneType: changePhoneType,
  291. phone: phone,
  292. code: code,
  293. captchaVerification: captchaVerification
  294. }),
  295. contentType: "application/json",
  296. dataType: 'json',
  297. cache: false,
  298. success: function (res) {
  299. if(res.status == 0){
  300. timerHandle('back');
  301. if(changePhoneType == 1){
  302. $('.copy-dialog').animate({top: '3.8rem'},"fast");
  303. $('.copy-mask').show();
  304. }else{
  305. $('.ios-dialog').animate({top: '5.75rem'},"fast");
  306. $('.ios-mask').show();
  307. }
  308. document.documentElement.style.overflow='hidden';
  309. }else{
  310. toastr.error(res.msg);
  311. }
  312. }
  313. })
  314. }
  315. $('.phone-ipt')[0].oninput = checkPhone;
  316. function checkPhone(){
  317. phone = $('.phone-ipt').eq(0).val();
  318. phone = phone.replace(/\s+/g,"");
  319. if(phone.length > 11){
  320. phone = phone.slice(0,11);
  321. $('.phone-ipt').eq(0).val(phone);
  322. }
  323. let reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  324. if(!phone){
  325. $('.phone-tip').eq(0).css('display', 'block');
  326. return false;
  327. }else if(!reg_tel.test(phone) && phone.length == 11){
  328. $('.phone-tip').eq(0).css('display', 'block');
  329. return false;
  330. }else{
  331. $('.phone-tip').eq(0).css('display', 'none');
  332. return true;
  333. }
  334. }
  335. $('.code-ipt')[0].oninput = checkCode;
  336. function checkCode(e){
  337. code = $('.code-ipt').eq(0).val();
  338. code = code.replace(/\s+/g,"");
  339. if(code.length > 6){
  340. code = code.slice(0,6);
  341. $('.code-ipt').eq(0).val(code);
  342. }
  343. if(!code){
  344. $('.code-tip').eq(0).css('display', 'block');
  345. return false;
  346. }else{
  347. $('.code-tip').eq(0).css('display', 'none');
  348. return true;
  349. }
  350. }
  351. $('.phone-ipt')[0].addEventListener('blur',() => {
  352. phone = $('.phone-ipt').eq(0).val();
  353. phone = phone.replace(/\s+/g,"");
  354. let reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/;
  355. if(!reg_tel.test(phone)){
  356. $('.phone-tip').eq(0).css('display', 'block');
  357. }
  358. },false);
  359. $('.code-ipt')[0].addEventListener('blur',() => {
  360. code = $('.code-ipt').eq(0).val();
  361. code = code.replace(/\s+/g,"");
  362. if(code.length < 6){
  363. $('.code-tip').eq(0).css('display', 'block');
  364. }
  365. },false);
  366. $('.mask-btn-wrap')[0].addEventListener('click',download,false);
  367. $('.mask-btn-wrap')[1].addEventListener('click',download,false);
  368. function download() {
  369. if (isAndroid) {
  370. if (baseUrl == 'https://per.cs.se.androidscloud.com') {
  371. window.location.href = 'http://per.cs.se.androidscloud.com:8888'
  372. } else {
  373. window.location.href = 'http://www.androidscloud.com?timestamp=' + Math.random();
  374. }
  375. } else if (isIOS) {
  376. document.location.href = 'https://www.pgyer.com/gemini6?timestamp=' + Math.random();
  377. } else {
  378. document.location.href = 'https://www.androidscloud.com?timestamp=' + Math.random();
  379. }
  380. }
  381. $('.close')[0].addEventListener('click', (e) => {
  382. $('.copy-dialog').animate({top: '-6.96rem'},"fast");
  383. $('.copy-mask').hide();
  384. document.documentElement.style.overflow='auto';
  385. });
  386. $('.close1')[0].addEventListener('click', (e) => {
  387. $('.ios-dialog').animate({top: '-6.96rem'},"fast");
  388. $('.ios-mask').hide();
  389. document.documentElement.style.overflow='auto';
  390. });
  391. function getConfig() {
  392. $.ajax({
  393. url: baseUrl + '/api/user/v1/changePhone/activity/config',
  394. type: 'get',
  395. contentType: "application/json",
  396. dataType: 'json',
  397. cache: false,
  398. success: function (res) {
  399. enable = res.data.enable;
  400. // let startTime = res.data.startTime.substr(0,10);
  401. let time = res.data.endTime;
  402. let endTime = time.substring(0,4) + '年' + time.substring(5,7) + '月' + time.substring(8,10) + '日';
  403. $('.time-text').eq(0).text(`活动截止至${endTime}`);
  404. },
  405. })
  406. }
  407. function operate(pointName) {
  408. $.ajax({
  409. url: baseUrl + '/api/public/v1/systemBuriedPoint/stat',
  410. type: 'post',
  411. data: JSON.stringify({
  412. pointName: pointName
  413. }),
  414. contentType: "application/json",
  415. dataType: 'json',
  416. cache: false,
  417. success: function (res) {},
  418. })
  419. }
  420. function validate() {
  421. $('#mpanel2').slideVerify({
  422. baseUrl: baseUrl + '/api/user', //服务器请求地址, 默认地址为安吉服务器;
  423. mode: 'pop', //展示模式
  424. containerId: 'form-btn', //pop模式 必填 被点击之后出现行为验证码的元素id
  425. imgSize: { //图片的大小对象,有默认值{ width: '310px',height: '155px'},可省略
  426. width: imgWidth,
  427. height: imgHeight
  428. },
  429. barSize: {//下方滑块的大小对象,有默认值{ width: '310px',height: '50px'},可省略
  430. width: imgWidth,
  431. height: barHeight
  432. },
  433. beforeCheck: () => {
  434. return true
  435. },
  436. ready: () => {
  437. }, //加载完毕的回调
  438. success: (params) => { //成功的回调
  439. captchaVerification = params.captchaVerification;
  440. setTimeout(() => {
  441. submit();
  442. },1000)
  443. },
  444. error: function () {}
  445. });
  446. }
  447. function timerHandle(type){
  448. isStart = false;
  449. time = 60;
  450. clearInterval(codeTimer);
  451. $('.get-code').eq(0).text('获取验证码');
  452. $('.get-code-active')[0].className = 'get-code';
  453. if(type == 'back'){
  454. $('.phone-ipt').eq(0).val('');
  455. $('.code-ipt').eq(0).val('');
  456. phone = '';
  457. code = '';
  458. }
  459. }
  460. //防止提示一秒内重复显示
  461. function stopManyClick(fn) {
  462. if (flag) {
  463. fn();
  464. }
  465. flag = false;
  466. if (timer) { clearTimeout(timer); }
  467. timer = setTimeout(() => { flag = true }, 1500);
  468. }
  469. </script>
  470. </body>
  471. </html>