1document.addEventListener("DOMContentLoaded", function () { 2 //è§£æJSON 3 function parseJSONSafely(jsonString) { 4 let parsedObject = null; 5 try { 6 parsedObject = JSON.parse(jsonString); 7 } catch (e) { } 8 return parsedObject; 9 } 10 11 //è¨å®å°è©±è¦çª 12 function setMarketingModel() { 13 // 鲿¢ script è¢«å¤æ¬¡è¼å ¥å°è´åºç¾éè¤è¦çª 14 if (document.querySelector('[data-rel="member-marketing-check"]')) { 15 return; 16 } 17 // å å ¥css 18 const css = ` 19 .modal-overlay{ 20 position:fixed; 21 inset:0; 22 background:rgba(0,0,0,0.5); 23 display:flex; 24 align-items:center; 25 justify-content:center; 26 z-index:99999; 27 } 28 `; 29 const style = document.createElement('style'); 30 style.textContent = css; 31 document.head.appendChild(style); 32 33 // 建ç«modalçµæ§ 34 const overlay = document.createElement('div'); 35 overlay.className = 'modal-overlay'; 36 overlay.innerHTML = ` 37 <div class="container"> 38 <div class="row justify-content-center"> 39 <div class="col-md-7 col-12"> 40 <div class="card shadow" data-rel="member-marketing-check"> 41 <div class="card-body"> 42 <h5 class="card-title text-center mb-4">åè³ä¿è·æ³æ¿ç</h5> 43 <p class="card-text text-center"> 44 é ååè³ä¿è·æ³æ¿çï¼è«æ¨é¸ææ¯å¦è¨é±ææ°è³è¨ï¼ä»¥ææ¡åªæ ãæ´»åèéè¦å ¬åã<br> 45 æ¨ä¹å¯ä»¥é¨æç»å ¥æå¡è³æç·¨è¼¯é é¢ï¼æ´æ°åäººè³ææèª¿æ´æ¤è¨é±é¸é ã 46 </p> 47 <div class="text-center"> 48 <button id="btnMarketingNo" type="button" data-type="false" class="btn btn-danger"> 49 <i class="fa fa-times"> </i>æ«ä¸éè¦ 50 </button> 51 <button id="btnMarketingYes" type="button" data-type="true" class="btn btn-success"> 52 <i class="fa fa-check"> </i>åææ¥æ¶ 53 </button> 54 </div> 55 </div> 56 </div> 57 </div> 58 </div> 59 </div> 60 `; 61 62 // å å ¥å°body 63 document.body.appendChild(overlay); 64 65 // æéäºä»¶ 66 overlay.addEventListener('click', e => { 67 if (!e.target.closest('[data-rel="member-marketing-check"]')) { 68 overlay.remove(); 69 } 70 }); 71 72 $("#btnMarketingNo, #btnMarketingYes").on('click', function (e) { 73 const type = $(this).data('type'); 74 $.ajax({
75 url: '/api/member/setmembermarketing', 76 type: 'POST', 77 data: { marketing: type } 78 }).always(() => { 79 sessionStorage.setItem("marketingInfo", JSON.stringify({ userid: aesUserId, check: false })); 80 }); 81 overlay.remove(); 82 }); 83 } 84 85 86 const aesUserId = sessionStorage.getItem("aesUserId"); 87 let mInfo = parseJSONSafely(sessionStorage.getItem("marketingInfo")); 88 //æåsessionStorage鲿¢å¤§éè®å 89 if (mInfo != null && mInfo.userid === aesUserId) { 90 if (mInfo.check === true) { 91 setMarketingModel(); 92 } 93 } else { 94 $.ajax({ 95 url: '/api/member/getmarketinginfo', 96 type: 'GET', 97 success: function (result) { 98 mInfo = parseJSONSafely(result); 99 if (mInfo != null) { 100 if (mInfo.check === true) { 101 setMarketingModel(); 102 } 103 sessionStorage.setItem("marketingInfo", result); 104 sessionStorage.setItem("aesUserId", mInfo.userid); 105 } 106 } 107 }).always(() => { 108 //æªç»å ¥èç 109 if (sessionStorage.getItem("aesUserId") === null) { 110 sessionStorage.setItem("marketingInfo", JSON.stringify({ userid: null, check: false })); 111 } 112 }); 113 } 114});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.