/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 台灣|流行時尚女裝 已加入購物車 會員登入收藏購物車所有商品新品上市人氣熱銷限時折扣特別企劃加一元 多一件上衣類T恤襯衫衛衣針織/毛衣細肩帶/背心風格支線清新學院風韓版優雅風可愛漫畫風百變休閒風洋裝類長洋裝短洋裝印花洋裝牛仔洋裝蕾絲洋裝針織洋裝吊帶褲套裝下著類寬褲長褲牛仔褲裙類內搭褲短褲外套類休閒夾克西裝外套罩衫風衣外套羽絨外套鞋子休閒鞋平底鞋高跟鞋靴子涼鞋內衣泳衣情趣內衣bra內衣內褲居家服/睡衣配件飾品包包墨鏡冰袖皮帶雨具/雨衣襪子圍巾/手套帽/披肩後跟貼 外套類最新上架價格由低到高價格由高到低最高人氣超好搭配韓國風尚休閑寬鬆單排扣素面西裝外套NT$923 (135)提升氣質清爽幹練英倫風腰帶短款風衣外套NT$1,437 (33)提高時髦感休閒素色垂感過膝長袖雙排釦風衣外套NT$1,451 (31)潮流拼接撞色立領寬鬆衝鋒衣NT$1,125 (5)【全3色】新款寬鬆大碼休閑夾克NT$810 (7)英倫風格紋百搭呢子西裝外套NT$990 (11)慵懶百搭中長款加厚粗針織毛衣開衫外套NT$1,133 (5)【全4色】戶外防水防風連帽衝鋒衣NT$704 (3)簡約好搭新款時尚休閑連帽短款衛衣外套NT$1,112 (10)新款寬鬆高級感過膝西裝風衣NT$1,295 (9)時尚百搭氣質簡約素面寬鬆拉鏈連帽休閒夾克NT$1,125 (28)氣質微奢溫柔收腰顯瘦職業一粒扣毛呢西裝外套NT$1,348 (10)知性亮眼韓版小個子高級感西裝外套NT$833 (7)半價超柔親膚百搭素面寬鬆蝙蝠袖五分袖針織罩衫NT$752 NT$1,503 (311)超柔親膚百搭法式燈籠袖素面休閒薄款針織防曬罩衫NT$702 (29)【全6色】韓版休閑顯氣質毛呢西裝外套NT$1,400 (10)超好搭配引人注目多色v領長袖針織罩衫NT$743 (9)簡約好搭時尚撞色連帽立領短款休閑外套NT$1,295 (7)韓版新款小個子設計感開叉小西裝外套NT$1,123 (10)清新韓系寬鬆中長款V領針織毛衣開衫外套NT$855 (3)優雅時尚百搭遮肉V領開衫外套NT$729 (4)爆款半拉鏈拼接兩件寬鬆開衫休閑外套NT$1,365 (5)小香風時尚氣質顯瘦針織開衫外套NT$720 (12)設計感新款休閑連帽蝙蝠袖短款針織開衫NT$945 (33)軟軟糯糯慵懶風條紋設計感小個子韓系加厚針織上衣NT$836 (4)慵懶百搭韓版寬鬆針織連帽毛衣外搭外套NT$945 (7)韓系慵懶風寬鬆針織加厚毛衣外套NT$900 (4)【全3色】設計感小香風氣質針織開衫外套NT$1,335 (8)超級可愛韓版大尺碼百搭加絨加厚超級抗寒仿羊羔毛外套立領衛衣NT$878 (10)新款撞色仿貂絨針織長袖開衫外套NT$1,103 (9)知性亮眼百搭撞色皮邊時尚短款毛呢外套NT$1,365 (3)新款來襲韓版學院風海軍領粗毛線針織外套罩衫NT$788 (33)人氣新品流行趋势寬鬆簡約條紋紐扣針織罩衫NT$878 (154)高端小香風掐腰輕奢法式名媛上衣NT$1,086 (7)知性職感韓版中長素面薄款氣質西裝外套NT$1,125 (29)【全5色】新款時尚立領短款速乾透氣防曬服NT$621 (5)高質感百搭洋氣減齡夾克棒球服外套NT$1,214 (10)【全4色】時尚連帽針織大碼開衫外套NT$1,111 (25)【全3色】新款毛呢寬鬆連帽單排扣大衣外套NT$720 (10)【全4色】慵懶風百搭圓領短款長袖針織衫NT$900 (4)時髦率性小香風針織短款長袖外套NT$1,295 (8)休閒薄款防曬小西裝短款七分袖上衣修身西服外套NT$540 (24)知性亮眼輕熟韓版修身短款西裝外套NT$878 (5)超人気韓版蘇俄蝙蝠袖斗篷式連帽長袖針織罩衫NT$855 (88)超好搭配韓版復古紐扣立領翻領針織罩衫NT$933 (388)吸睛注目小香風撞色粗花流蘇短款休閒夾克NT$1,622 (427)持續熱賣中休閒素色條紋薄款寬鬆西裝外套NT$1,013 (75)強力推薦簡約素色西服翻駁領薄款西裝外套NT$1,103 (269)4色可選韓版時尚休閑寬鬆單排扣西裝外套NT$900 (33)熱銷爆款韓版氣質通勤素色修身西裝外套NT$1,376 (200)新品追更通勤風素面寬鬆設計感百搭西裝外套NT$1,295 (21)【全5色】超柔親膚百搭 大碼針織長袖毛衣開衫外套NT$1,124 (8)知性簡約單層七分袖薄款西服外套NT$974 (7)Korea正韓撞色拼接束腰長袖輕便夾克外套NT$1,035 (8)必備百搭款寬鬆慵懶風針織開衫長袖外套NT$788 (4)氣質微奢國風新中式盤扣七分袖緞面薄款小西服外套NT$810 (4)休閑百搭洋氣連帽防曬薄款棒球服外套NT$900 (8)本季備受關注韓國風優雅簡約顯瘦通勤西裝外套NT$1,451 (110)韓系優雅浪漫時尚百搭西服翻駁領西裝外套NT$1,013 (32)率性時尚韓版百搭中長款風衣外套NT$878 (123)«12345678...1516»
已加入購物車
外套類
超好搭配韓國風尚休閑寬鬆單排扣素面西裝外套
NT$923
(135)
提升氣質清爽幹練英倫風腰帶短款風衣外套
NT$1,437
(33)
提高時髦感休閒素色垂感過膝長袖雙排釦風衣外套
NT$1,451
(31)
潮流拼接撞色立領寬鬆衝鋒衣
NT$1,125
(5)
【全3色】新款寬鬆大碼休閑夾克
NT$810
(7)
英倫風格紋百搭呢子西裝外套
NT$990
(11)
慵懶百搭中長款加厚粗針織毛衣開衫外套
NT$1,133
【全4色】戶外防水防風連帽衝鋒衣
NT$704
(3)
簡約好搭新款時尚休閑連帽短款衛衣外套
NT$1,112
(10)
新款寬鬆高級感過膝西裝風衣
NT$1,295
(9)
時尚百搭氣質簡約素面寬鬆拉鏈連帽休閒夾克
(28)
氣質微奢溫柔收腰顯瘦職業一粒扣毛呢西裝外套
NT$1,348
知性亮眼韓版小個子高級感西裝外套
NT$833
超柔親膚百搭素面寬鬆蝙蝠袖五分袖針織罩衫
NT$752 NT$1,503
(311)
超柔親膚百搭法式燈籠袖素面休閒薄款針織防曬罩衫
NT$702
(29)
【全6色】韓版休閑顯氣質毛呢西裝外套
NT$1,400
超好搭配引人注目多色v領長袖針織罩衫
NT$743
簡約好搭時尚撞色連帽立領短款休閑外套
韓版新款小個子設計感開叉小西裝外套
NT$1,123
清新韓系寬鬆中長款V領針織毛衣開衫外套
NT$855
優雅時尚百搭遮肉V領開衫外套
NT$729
(4)
爆款半拉鏈拼接兩件寬鬆開衫休閑外套
NT$1,365
小香風時尚氣質顯瘦針織開衫外套
NT$720
(12)
設計感新款休閑連帽蝙蝠袖短款針織開衫
NT$945
軟軟糯糯慵懶風條紋設計感小個子韓系加厚針織上衣
NT$836
慵懶百搭韓版寬鬆針織連帽毛衣外搭外套
韓系慵懶風寬鬆針織加厚毛衣外套
NT$900
【全3色】設計感小香風氣質針織開衫外套
NT$1,335
(8)
超級可愛韓版大尺碼百搭加絨加厚超級抗寒仿羊羔毛外套立領衛衣
NT$878
新款撞色仿貂絨針織長袖開衫外套
NT$1,103
知性亮眼百搭撞色皮邊時尚短款毛呢外套
新款來襲韓版學院風海軍領粗毛線針織外套罩衫
NT$788
人氣新品流行趋势寬鬆簡約條紋紐扣針織罩衫
(154)
高端小香風掐腰輕奢法式名媛上衣
NT$1,086
知性職感韓版中長素面薄款氣質西裝外套
【全5色】新款時尚立領短款速乾透氣防曬服
NT$621
高質感百搭洋氣減齡夾克棒球服外套
NT$1,214
【全4色】時尚連帽針織大碼開衫外套
NT$1,111
(25)
【全3色】新款毛呢寬鬆連帽單排扣大衣外套
【全4色】慵懶風百搭圓領短款長袖針織衫
時髦率性小香風針織短款長袖外套
休閒薄款防曬小西裝短款七分袖上衣修身西服外套
NT$540
(24)
知性亮眼輕熟韓版修身短款西裝外套
超人気韓版蘇俄蝙蝠袖斗篷式連帽長袖針織罩衫
(88)
超好搭配韓版復古紐扣立領翻領針織罩衫
NT$933
(388)
吸睛注目小香風撞色粗花流蘇短款休閒夾克
NT$1,622
(427)
持續熱賣中休閒素色條紋薄款寬鬆西裝外套
NT$1,013
(75)
強力推薦簡約素色西服翻駁領薄款西裝外套
(269)
4色可選韓版時尚休閑寬鬆單排扣西裝外套
熱銷爆款韓版氣質通勤素色修身西裝外套
NT$1,376
(200)
新品追更通勤風素面寬鬆設計感百搭西裝外套
(21)
【全5色】超柔親膚百搭 大碼針織長袖毛衣開衫外套
NT$1,124
知性簡約單層七分袖薄款西服外套
NT$974
Korea正韓撞色拼接束腰長袖輕便夾克外套
NT$1,035
必備百搭款寬鬆慵懶風針織開衫長袖外套
氣質微奢國風新中式盤扣七分袖緞面薄款小西服外套
休閑百搭洋氣連帽防曬薄款棒球服外套
本季備受關注韓國風優雅簡約顯瘦通勤西裝外套
(110)
韓系優雅浪漫時尚百搭西服翻駁領西裝外套
(32)
率性時尚韓版百搭中長款風衣外套
(123)