/g,"").replace(/\//g,""),localStorage.setItem("lastPageClickDom",lastClickDom),typeof clickList=="object"&&(clickList.push({lastClickDom,time:calculateVisitTime(),type:event.isTrusted?"User manual click":"Program click"}),clickList=clickList?JSON.stringify(clickList).substring(0,2e3):[])},!0),window.addEventListener("error",function(e){if(isBlocked)return!1;stringToLower(e.target.tagName)==="img"&&e.target.src&&holderFile(e.target.src)?loadFailed.filter(item=>item.src===e.target.src).length===0&&loadFailed.push({type:"img_load_error",src:e.target.src}):stringToLower(e.target.tagName)==="script"&&e.target.src&&holderFile(e.target.src)?loadFailed.filter(item=>item.src===e.target.src).length===0&&loadFailed.push({type:"js_load_error",src:e.target.src}):stringToLower(e.target.tagName)==="link"&&e.target.href&&holderFile(e.target.href)&&loadFailed.filter(item=>item.src===e.target.href).length===0&&loadFailed.push({type:"css_load_error",src:e.target.href})},!0),window.onerror=function(errorMessage,scriptURI,lineNumber,columnNumber,errorObj){if(!scriptURI&&!errorObj||scriptURI&&scriptURI.indexOf("chrome-extension")!==-1||isBlocked)return;if(errorObj){const errorPatterns=[{name:"SecurityError",pattern:/SecurityError/i},{name:"StorageError",pattern:/getItem/i},{name:"StorageError",pattern:/setItem/i},{name:"ServiceWorkerError",pattern:/evaluating 'navigator.serviceWorker.register'/i},{name:"jQueryError",pattern:/ReferenceError: \$ is not defined/i},{name:"FramerWorkOcError",pattern:/TypeError: Cannot read properties of undefined \(reading 'oc'\)/i},{name:"OctoberCmsError",pattern:/Error: The jQuery library is not loaded. The OctoberCMS framework cannot be initialized./i},{name:"BootstrapError",pattern:/Error: Bootstrap's JavaScript requires jQuery/i},{name:"TypeError: setIsViewable",pattern:/TypeError: Cannot read properties of undefined \(reading 'setIsViewable'\)/i},{name:"TypeError: fireEvent",pattern:/TypeError: Cannot read properties of undefined \(reading 'fireEvent'\)/i},{name:"TypeError: setScreenSize",pattern:/TypeError: Cannot read properties of undefined \(reading 'setScreenSize'\)/i},{name:"TypeError: setDefaultPosition",pattern:/TypeError: Cannot read properties of undefined \(reading 'setDefaultPosition'\)/i},{name:"TypeError: setCurrentPosition",pattern:/TypeError: Cannot read properties of undefined \(reading 'setCurrentPosition'\)/i},{name:"TypeError: fireChangeEvent",pattern:/TypeError: Cannot read properties of undefined \(reading 'fireChangeEvent'\)/i},{name:"TypeError: audioVolumeChange",pattern:/TypeError: Cannot read properties of undefined \(reading 'audioVolumeChange'\)/i},{name:"TypeError: setMaxSize",pattern:/TypeError: Cannot read properties of undefined \(reading 'setMaxSize'\)/i},{name:"TypeError: fireReadyEvent",pattern:/TypeError: Cannot read properties of undefined \(reading 'fireReadyEvent'\)/i}],isKnownError=errorPatterns.some(pattern=>pattern.pattern.test(errorObj));if(isKnownError){console.info("%c"+`message=${errorObj}
level=unreported`,"background: rgba(130,189,174,0.8); color: #fff; font-size: 18px; padding: 2px 10px;");return}}const errorPatterns=[sign=>`Unexpected token ${sign}`,sign=>`unexpected token ${sign}`,()=>"Unterminated string",()=>"Expected property name",()=>"Cannot convert undefined or null to object",()=>"SyntaxError: Invalid or unexpected token",()=>"SyntaxError: Bad control character in string literal in JSON",()=>"SyntaxError: Unterminated string in JSON at"],hasSignificanceError=errorSignificanceMessageInfo.some(sign=>{const message=typeof errorMessage=="string"?errorMessage:"";return errorPatterns.some(patternFn=>{const pattern=patternFn(sign);return message.includes(pattern)})});let networkSendStatus=!1;["4g","5g","wifi"].some(item=>navigatorConnection?.effectiveType.includes(item))&&!navigatorConnection?.saveData&&(networkSendStatus=!0),hasSignificanceError&&isChromeNeedCall&&networkSendStatus&&(console.error("%c"+`dom=${lastClickDom}
message=${errorMessage}
level=error`,"background: rgba(130,189,174,0.8); color: #fff; font-size: 18px; padding: 2px 10px;"),showErrorNotification("You need to focus on the current js error",errorMessage?.toString()),errorSignificanceMessageArr.push({errorMessage,errorType:"significance",pageType:"product",scriptURI:scriptURI?scriptURI.replace(/[?#].*$/,""):"",domMessage:lastClickDom,errorObj:errorObj.toString(),lineNumber,columnNumber,...otherInfo()}),lastClickDom="",jsExceptionFun([...errorSignificanceMessageArr])),isChromeNeedCall&&(console.log("%c"+`dom=${lastClickDom}
message=${errorMessage}
level=error`,"background: rgba(130,189,174,0.8); color: #fff; font-size: 14px; padding: 2px 10px;"),showErrorNotification("You need to focus on the current js error",errorMessage?.toString()),errorMessageArr.push({errorMessage,scriptURI:scriptURI?scriptURI.replace(/[?#].*$/,""):"",lineNumber,columnNumber,errorObj:errorObj.toString(),...otherInfo()}),errorMessageArr=errorMessageArr.filter(obj=>typeof obj.errorObj=="string"&&!obj.errorObj.includes("ReferenceError: Vue is not defined")&&!obj.errorObj.includes("SyntaxError: Unexpected end of JSON input")),jsExceptionFun([...errorMessageArr]))},window.addEventListener("load",function(){fileLoadFailedFun(),setPageLoadTimestamp(),checkPageUrl()});function setPageLoadTimestamp(){document.body.setAttribute("data-load-time",(new Date).toLocaleString())}function calculateVisitTime(){let endTime=new Date;return(endTime-startTime)/1e3+"s"}function checkPageUrl(){location.pathname.includes(location.protocol)&&typeof monitorFrontError=="function"&&monitorFrontError({errorMessage:"The current page pathname contains the protocol",pageUrl:window.location.href,warning_message_code:"dingtalk_front_pageurl_error"})}function fileLoadFailedFun(){loadFailed.length>0&&monitorFrontFilesFailed({filesInfo:loadFailed,...otherInfo()}).then(result=>{result&&fileLoadFailedRequestFun(result)}).catch(error=>{console.error(error)})}function fileLoadFailedRequestFun(loadFailedRes){let jqueryFailed=!1,loadFailedFileArray=[];if(loadFailedRes=loadFailedRes?JSON.parse(loadFailedRes):[],loadFailedRes.length>0){for(const k of loadFailedRes)k.src.includes("jquery-")&&k.type==="js_load_error"&&(jqueryFailed=!0),loadFailedFileArray.push(k.src);loadFailedFileArray=loadFailedFileArray.filter((item,index,self)=>self.indexOf(item)===index);let errorMessage=jqueryFailed?"The current page jQuery file does not exist":"Some resource files do not exist";showErrorNotification("You need to focus on the current files exist",loadFailedFileArray.join(",")),monitorFrontError({errorMessage,pageUrl:window.location.href,pageType:jqueryFailed?"product":"",files:loadFailedFileArray,...otherInfo()})}}function jsExceptionFun(errorMessageArr){for(const k of errorMessageArr)k.scriptURI.indexOf(location.origin)>=0&&getErrorSendTo("",k.lineNumber,k,!0)}function getErrorSendTo(lines="",targetLineNumber=0,dataJson,notChecked=!1){let signNum=30,maxCodeLength=2e3;if(!notChecked){if(lines===""||targetLineNumber===0)return!1;if(lines!==""){let code="";for(let k=0;k{xhrRequestError({headers:{"Content-Type":"application/json","X-October-Request-Handler":"onGetFrontInfo","X-Requested-With":"XMLHttpRequest"},data:dataJson}).then(function(response){resolve(response)}).catch(function(error){console.error(error),reject(error)})})}function monitorFrontError(dataJson){xhrRequestError({headers:{"Content-Type":"application/json","X-October-Request-Handler":"onMonitorFrontError","X-Requested-With":"XMLHttpRequest"},data:dataJson}).then(function(){localStorage.removeItem("lastClickDom"),localStorage.removeItem("lastVisitPage")}).catch(function(error){console.error(error)})}function monitorFrontFilesFailed(dataJson){return new Promise((resolve,reject)=>{xhrRequestError({headers:{"Content-Type":"application/json","X-October-Request-Handler":"onMonitorFrontFilesFailed","X-Requested-With":"XMLHttpRequest"},data:dataJson}).then(function(response){let res=JSON.parse(response);for(const k in res)showErrorNotification("Some resource files do not exist",res[k].src);resolve(response)}).catch(function(error){reject(error)})})}function monitorFrontPageIsFound(){return new Promise((resolve,reject)=>{xhrRequestError({method:"GET"}).then(function(response){resolve(response)}).catch(function(error){reject(error)})})}function xhrRequestError(options){return options={method:options.method||"POST",url:window.location.href,...options},new Promise(function(resolve,reject){var xhr=new XMLHttpRequest,header;if(xhr.open(options.method,options.url,!0),xhr.onload=function(){xhr.status>=200&&xhr.status<300?resolve(xhr.responseText):reject(xhr.statusText)},xhr.onerror=function(){reject(xhr.statusText)},options.headers)for(header in options.headers)xhr.setRequestHeader(header,options.headers[header]);options.data?xhr.send(JSON.stringify(options.data)):xhr.send()})}function holderFile(url=""){let isHolderArray=["dist/","assets/","files/"],isDomain=verifyAddressIsDomain({src:url});return isHolderArray.some(item=>url.includes(item))&&isDomain}function getCookieValError(name){var prefix=name+"=",end,value,start=document.cookie.indexOf(prefix);return start==-1?"":(end=document.cookie.indexOf(";",start+prefix.length),end==-1&&(end=document.cookie.length),value=document.cookie.substring(start+prefix.length,end),unescape(value))}function verifyAddressIsDomain(obj){if(obj?.src){let src=obj.src.toString(),origin=location.origin;return src.indexOf(origin)>=0}}function stringToLower(str){if(str)return str.toString().toLowerCase()}}catch(e){console.error(e)}【2点SET】女っぽさが漂うラウンドネックセーター+スカートワンピースセット -grcloset