/g,"").replace(/\//g,""),typeof clickList=="object"){let time=calculateVisitTime();event.isTrusted?clickList.push({lastClickDom,time,type:"User manual click"}):clickList.push({lastClickDom,time,type:"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 securityError=/SecurityError/i.test(errorObj),getItemError=/getItem/i.test(errorObj),setItemError=/setItem/i.test(errorObj),serviceWorkerError=/evaluating 'navigator.serviceWorker.register'/i.test(errorObj);if(securityError||setItemError||getItemError||serviceWorkerError)return}const hasSignificanceError=errorSignificanceMessageInfo.some(sign=>errorMessage.includes("Unexpected token "+sign)||errorMessage.includes("unexpected token"+sign)||errorMessage.includes("Unterminated string")||errorMessage.includes("Expected property name")||errorMessage.includes("Cannot convert undefined or null to object"));let networkSendStatus=!1;["4g","5g","wifi"].some(item=>navigatorConnection?.effectiveType.includes(item))&&!navigatorConnection?.saveData&&(networkSendStatus=!0),hasSignificanceError&&isChromeNeedCall&&networkSendStatus&&(console.log("%c"+`dom=${lastClickDom}
message=${errorMessage}`,"background: rgba(130,189,174,0.8); color: #fff; font-size: 18px; padding: 2px 10px;"),errorSignificanceMessageArr.push({errorMessage,errorType:"significance",pageType:"",scriptURI:scriptURI?scriptURI.replace(/[?#].*$/,""):"",domMessage:lastClickDom,errorObj:errorObj.toString(),lineNumber,columnNumber,...otherInfo()}),lastClickDom=""),isChromeNeedCall&&(console.log("%c"+`dom=${lastClickDom}
message=${errorMessage}`,"background: rgba(130,189,174,0.8); color: #fff; font-size: 14px; padding: 2px 10px;"),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")))},window.addEventListener("load",function(){let mergeErrorMessage=errorMessageArr.concat(errorSignificanceMessageArr);fileLoadFailedFun(),jsExceptionFun(mergeErrorMessage),setPageLoadTimestamp(),checkPageUrl()});function setPageLoadTimestamp(){document.body.setAttribute("data-load-time",(new Date).toLocaleString())}function abuttingJointFramework(c){if(c&&c.textStatus&&c.textStatus==="error"){let r={};r.handler=c.context.handler,r.errorObj=JSON.stringify(c.context.options),r.errorMessage=c.dataOrXhr.responseText,r.errorType="request error",r.pageType="",c.errorMessage&&monitorFrontError(r)}}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";monitorFrontError({errorMessage,pageUrl:window.location.href,pageType:jqueryFailed?"":"",files:loadFailedFileArray,...otherInfo()})}}function jsExceptionFun(errorMessageArr){for(const k of errorMessageArr)k.scriptURI.indexOf(location.origin)>=0&&getErrorSendTo("",k.lineNumber,k,!0)}function handleResourceError(errorMessage,resourceSrc){monitorFrontError({errorMessage,pageUrl:window.location.href,src:resourceSrc,...otherInfo()})}function getWebPageSource(url){return new Promise(function(resolve,reject){let xhr=new XMLHttpRequest;xhr.open("GET",url),xhr.onload=function(){xhr.status===200?resolve(xhr.responseText):reject("HTTP request failed with status code "+xhr.status)},xhr.onerror=function(){reject("Error fetching web page")},xhr.send()})}function processHtmlSourceCode(htmlSourceCode,targetLineNumber,pageTextType,info){if(pageTextType==="html"){const parser=new DOMParser,doc=parser.parseFromString(htmlSourceCode,"text/html"),lines=doc.documentElement.innerHTML.split(`
`);getErrorSendTo(lines,targetLineNumber,info)}if(pageTextType==="js"){const lines=htmlSourceCode.split(`
`);getErrorSendTo(lines,targetLineNumber,info)}}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({method:"POST",url:window.location.href,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,isShow=1){xhrRequestError({method:"POST",url:window.location.href,headers:{"Content-Type":"application/json","X-October-Request-Handler":"onMonitorFrontError","X-Requested-With":"XMLHttpRequest"},data:dataJson}).then(function(){isShow&&showErrorNotification(dataJson.errorType||"JsError",dataJson.errorMessage)}).catch(function(error){console.error(error)})}function monitorFrontFilesFailed(dataJson){return new Promise((resolve,reject)=>{xhrRequestError({method:"POST",url:window.location.href,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 xhrRequestError(options){return 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)}外套類|女性時尚 - vivi-look 台灣|流行時尚女裝
已加入購物車
韓版顯瘦百搭中長款純色大衣風衣外套
NT$1,113
(31)
引人注目氣質黑色加厚中長款毛呢風衣外套
NT$1,121
(117)
超高人氣時尚千鳥格翻領雙排扣西裝外套
NT$1,605
(32)
秋冬新款優雅素色圓領長袖針織罩衫
NT$1,060
(25)
高品質優雅素色口袋V領長袖針織罩衫
NT$1,035
(10)
大尺寸女毛絨連帽長袖純色衛衣印花毛絨寬鬆外套女
NT$1,315
(8)
新登場休閒雙面穿羊羔毛無袖寬鬆休閒夾克
NT$1,315
(35)
吸引視線韓版寬鬆中長素面毛呢風衣外套
NT$1,275
(38)
絕對時尚韓版撞色拼接寬鬆立領休閒夾克
NT$1,713
(33)
秋冬新品韓版格紋撞色翻領紐扣西裝外套
NT$1,396
(88)
高品質新品優雅素色紐扣鏤空長款針織罩衫
NT$1,382
(157)
高級感日系素色連帽拉鏈假兩件中長款休閒夾克
NT$932
(86)
提高時髦感優雅撞色中長款穿長袖口袋針織罩衫
NT$1,497
(29)
韓版氣質靜經典款單排扣翻領中長款風衣西裝外套
NT$1,100
(95)
引人注目時尚素面短款抽繩小個子休閒夾克
NT$1,960
(97)
提升氣質休閒格紋拼接短款毛呢加厚西裝外套
NT$1,396
(11)
優雅的設計氣質小香風針織開衫珍珠鈕扣休閒夾克
NT$2,118
(3)
提高時髦感韓系拼色寬鬆拉鏈高領針織休閒夾克
NT$1,417
(94)
超好搭配簡約素面寬鬆翻領口袋西裝外套
NT$1,434
(98)
本季亮點優雅素色單排釦長袖收腰過膝風衣外套
NT$1,359
(112)
主打產品復古素色百搭羊羔毛加厚連帽休閒夾克
NT$1,064
(8)
超柔親膚百搭時尚素色立領中長款蕾絲防曬罩衫
NT$675
(27)
慵懶百搭時尚素色長袖單排扣娃娃領針織罩衫
NT$855
(25)
氣質微奢韓系寬鬆仿水貂毛小香風灰色休閒夾克
NT$1,443
(99)
出遊必備時尚素色口袋立領減齡長袖休閒夾克
NT$1,080
(35)
秋季熱賣復古V領撞色刺繡紐扣罩衫
NT$1,058
(25)
秋冬新款時尚荷葉邊拼接寬鬆中長款風衣外套
NT$1,125
(140)
必備百搭款韓版撞色拉鏈短款毛呢休閒夾克
NT$1,622
(36)
知性美型優雅素色過膝毛呢加厚顯瘦風衣外套
NT$1,234
(99)
氣質微奢小香風短款菱格雙排釦圓領棉服
NT$1,114
(42)
百搭時髦韓版毛呢寬鬆雙排釦大碼風衣外套
NT$1,133
(130)
氣質微奢名媛羊羔毛撞色拼接寬鬆休閒夾克
NT$1,125
(6)
知性亮眼休閒素色內刷毛保暖連帽拉鏈棉衣休閒夾克
NT$1,315
(37)
懶人時尚慵懶風韓版撞色單排扣針織罩衫
NT$1,275
(28)
出遊必備韓版撞色寬鬆小個子設計感風衣外套
NT$1,125
(32)
秋冬新款韓版多色寬鬆口袋格紋撞色風衣外套
NT$1,315
(38)
Korea正韓優雅愛心單排扣圓領開衫針織罩衫
NT$810
(35)
寬鬆中長開襟毛衣外套女春秋羊毛衫外搭披風斗篷披肩
NT$1,238
(23)
慵懶百搭連帽内刷毛保暖拼接拉鏈衛衣外套休閒夾克
NT$743
(73)
氣質微奢小香風千鳥格設計感加厚休閑夾克
NT$1,947
(26)
美人首選高級感時尚仿皮草仿狐狸毛素面保暖休閒夾克
NT$1,315
(103)
輕熟時尚氣質百搭素面翻領雙排扣毛呢西裝外套
NT$1,125
(60)
氣質微奢韓版時尚仿水貂毛V領寬鬆毛毛休閒夾克
NT$1,058
(31)
溫柔慵懶風韓版時尚寬鬆素面軟糯針織罩衫
NT$743
(33)
提升氣質韓版素面西服翻駁領紐扣口袋西裝外套
NT$1,690
(34)
寬鬆慵懶風連帽百搭單排扣設計感針織開衫
NT$1,173
(10)
韓版寬鬆百搭皮毛一體羊羔毛無袖背心馬甲休閒夾克
NT$828
(10)
知性職感復古時尚百搭毛呢西裝外套
NT$855
(9)
氣質時尚百搭設計感圓領短褲毛呢休閒夾克
NT$1,125
(7)
百搭時髦韓版雙排釦翻領斗篷呢子大衣風衣外套
NT$1,518
(9)
時尚氣質百搭格紋顯瘦翻領防風保暖毛呢西裝外套
NT$1,636
(31)
秋季上新简约素面V领长袖多色针织罩衫
NT$720
(33)
溫柔的感覺氣質素色慵懶燈籠袖寬鬆針織罩衫
NT$1,214
(4)
本季備受關注小香風毛呢短款小個子時尚休閒夾克
NT$1,291
(26)
簡約質感休閒冰絲針織多色七分袖防曬罩衫
NT$729
(91)
時尚好搭冰絲針織防曬寬鬆V領罩衫
NT$567
(25)
超值好康柔軟風素色超薄小披肩防曬罩衫
NT$1,222
(28)
強力推薦超舒適透氣冰絲薄款長款防曬罩衫
NT$1,013
(23)
強力推薦時尚好搭中長款連帽防曬罩衫
NT$810
(35)
持續熱賣中 休閒 超舒適 潮流 防曬罩衫外套
NT$594
(6)