/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$880 NT$1,760 (141)半價洋氣高端法式減齡翻領長袖針織衫NT$528 NT$1,056 (120)新款燈籠袖小香風撞色格子長袖襯衫NT$648 (11)溫柔好感設計感蕾絲拼接燈籠袖圓領針織NT$785 (40)設計感重工拼接高領套頭針織毛衣NT$1,042 (7)發熱衣推薦加厚圓領修身打底衫NT$1,311 (8)【全4色】輕甜女孩花邊領拼色長袖針織衫NT$878 (9)【全4色】寬鬆遮肚顯瘦長袖衛衣NT$702 (9)半價溫柔簡約韓版寬鬆撞色圓領紐扣針織NT$880 NT$1,760 (4)半價溫柔慵懶風韓版粗線麻花圓領針織毛衣NT$765 NT$1,530 (4)【全4色】小衆木耳邊半高領修身打底衫NT$833 (7)必備百搭款加厚慵懶風高領針織毛衣NT$899 (5)日系圓領拼色簡約針織衫NT$783 (7)【全5色】polo領假兩件針織衫NT$968 (4)半價新款高端洋氣甜美chic小香風刺繡花v領軟糯針織紅色毛衣NT$775 NT$1,549 (3)洋氣時尚提花針織衫寬鬆顯瘦韓版圓領套頭卡通毛衣NT$855 (10)大碼可選超級顯瘦韓版寬鬆印花假兩件上衣NT$765 (8)文藝清新韓系格紋棉麻紐扣復古襯衫NT$855 (165)必備百搭款休閒五分袖紐扣設計圓領T恤NT$788 (530)半價簡約好搭休閒素面連帽長袖寬鬆襯衫NT$897 NT$1,794 (29)溫柔的感覺時尚撞色V領中長款假兩件T恤NT$715 (359)半價大尺寸設計感 好感女孩 寬鬆顯瘦打底衫NT$459 NT$918 (10)復古拼色半高領套頭寬鬆顯瘦針織毛衣NT$743 (11)新品時尚百搭條紋堆堆領長袖內搭T針織NT$729 NT$1,042 (7)新品氣質長袖撞色雪紡紗襯衫NT$749 NT$1,069 (6)新品韓系慵懶風高級感絕美愛心印花毛衣灰色半高領針織衫上衣NT$709 NT$1,013 (10)新品 半價韓國慵懶風灰色V領氣質設計感寬鬆顯瘦針織衫上衣NT$551 NT$1,102 (6)新品 半價韓系設計感海軍領撞色紐扣針織毛衣NT$880 NT$1,760 (26)新品簡約款慵懶風V領顯瘦針織衫NT$874 NT$1,248 (8)新品韓版簡約寬鬆撞色慵懶風假兩件針織毛衣NT$827 NT$1,182 (8)新品 半價寬鬆顯瘦復古撞色慵懶風針織毛衣NT$765 NT$1,530 (8)新品今年流行爆款寬鬆慵懶漸變色毛衣打底衫NT$847 NT$1,210 (6)新品新中式長袖設計感氣質顯瘦襯衫NT$749 NT$1,069 (7)新品復古寬鬆慵懶風菱格撞色高領針織毛衣NT$808 NT$1,154 (8)新品洋氣半高領漸變針織打底衫NT$971 NT$1,387 (10)新品簡約好搭立領套頭加厚針織打底衫NT$591 NT$844 (10)新品【全4色】高級感氣質寬鬆針織衫NT$690 NT$985 (5)新品時尚亮眼半高領加厚長袖貼鑽針織衫NT$985 NT$1,407 (11)新品 半價復古慵懶風菱格撞色v領長袖針織毛衣NT$981 NT$1,961 (4)新品【全3色】拼接ins原宿風潮流寬鬆連帽衛衣NT$709 NT$1,013 (6)新品溫柔百搭慵懶風蜻蜓撞色紐扣圓領針織NT$906 NT$1,294 (6)新品 半價韓版寬鬆復古素面圓領排扣針織NT$727 NT$1,454 (8)新品寬鬆休閒氣質百搭圓領針織馬甲+格紋襯衫NT$1,012 NT$1,445 (4)新品寬鬆慵懶風兔子韓版顯瘦v領馬甲針織NT$985 NT$1,407 (7)新品蕾絲拼接V領長袖針織衫NT$1,477 (4)新品慵懶風高級感寬鬆拼色針織毛衣NT$813 NT$1,162 (7)新品 半價必備百搭款加厚寬鬆半高領長袖針織衫NT$727 NT$1,454 (5)新品發熱衣推薦舒服保暖加厚磨毛長袖T恤NT$675 (6)新品韓版polo領加厚bf風套頭衛衣NT$810 (10)新品 半價高級感軟糯慵懶風印花針織衫NT$880 NT$1,760 (3)新品洋氣撞色套頭半高領針織衫NT$720 (7)新品時髦率性韓版漸變色連帽大碼衛衣NT$810 (4)新品舒服軟糯好感韓版寬鬆愛心印花v領針織毛衣NT$874 NT$1,248 (12)新品溫柔韓系慵懶風撞色寬鬆圓領針織毛衣NT$810 (5)人氣熱銷買兩件更划算! 不挑身材純色新款寬鬆打底衫顯瘦遮肉上衣NT$513 (7)新款高齡寬鬆加厚套頭撞色長袖衛衣NT$1,103 (6)人氣熱銷新款小香風粉色V領軟糯慵懶毛衣NT$798 (130)簡約好搭半拉鏈高領落肩顯瘦連帽長袖衛衣NT$1,187 (11)時髦率性條紋拼接寬鬆套頭洋氣休閑連帽衛衣NT$788 (7)休閒時尚簡約百搭條紋撞色連帽衛衣NT$855 (72)«12345678...4849»
已加入購物車
上衣類
韓系清新設計感撞色紐扣燈籠袖針織
NT$880 NT$1,760
(141)
洋氣高端法式減齡翻領長袖針織衫
NT$528 NT$1,056
(120)
新款燈籠袖小香風撞色格子長袖襯衫
NT$648
(11)
溫柔好感設計感蕾絲拼接燈籠袖圓領針織
NT$785
(40)
設計感重工拼接高領套頭針織毛衣
NT$1,042
(7)
發熱衣推薦加厚圓領修身打底衫
NT$1,311
(8)
【全4色】輕甜女孩花邊領拼色長袖針織衫
NT$878
(9)
【全4色】寬鬆遮肚顯瘦長袖衛衣
NT$702
溫柔簡約韓版寬鬆撞色圓領紐扣針織
(4)
溫柔慵懶風韓版粗線麻花圓領針織毛衣
NT$765 NT$1,530
【全4色】小衆木耳邊半高領修身打底衫
NT$833
必備百搭款加厚慵懶風高領針織毛衣
NT$899
(5)
日系圓領拼色簡約針織衫
NT$783
【全5色】polo領假兩件針織衫
NT$968
新款高端洋氣甜美chic小香風刺繡花v領軟糯針織紅色毛衣
NT$775 NT$1,549
(3)
洋氣時尚提花針織衫寬鬆顯瘦韓版圓領套頭卡通毛衣
NT$855
(10)
大碼可選超級顯瘦韓版寬鬆印花假兩件上衣
NT$765
文藝清新韓系格紋棉麻紐扣復古襯衫
(165)
必備百搭款休閒五分袖紐扣設計圓領T恤
NT$788
(530)
簡約好搭休閒素面連帽長袖寬鬆襯衫
NT$897 NT$1,794
(29)
溫柔的感覺時尚撞色V領中長款假兩件T恤
NT$715
(359)
大尺寸設計感 好感女孩 寬鬆顯瘦打底衫
NT$459 NT$918
復古拼色半高領套頭寬鬆顯瘦針織毛衣
NT$743
時尚百搭條紋堆堆領長袖內搭T針織
NT$729 NT$1,042
氣質長袖撞色雪紡紗襯衫
NT$749 NT$1,069
(6)
韓系慵懶風高級感絕美愛心印花毛衣灰色半高領針織衫上衣
NT$709 NT$1,013
韓國慵懶風灰色V領氣質設計感寬鬆顯瘦針織衫上衣
NT$551 NT$1,102
韓系設計感海軍領撞色紐扣針織毛衣
(26)
簡約款慵懶風V領顯瘦針織衫
NT$874 NT$1,248
韓版簡約寬鬆撞色慵懶風假兩件針織毛衣
NT$827 NT$1,182
寬鬆顯瘦復古撞色慵懶風針織毛衣
今年流行爆款寬鬆慵懶漸變色毛衣打底衫
NT$847 NT$1,210
新中式長袖設計感氣質顯瘦襯衫
復古寬鬆慵懶風菱格撞色高領針織毛衣
NT$808 NT$1,154
洋氣半高領漸變針織打底衫
NT$971 NT$1,387
簡約好搭立領套頭加厚針織打底衫
NT$591 NT$844
【全4色】高級感氣質寬鬆針織衫
NT$690 NT$985
時尚亮眼半高領加厚長袖貼鑽針織衫
NT$985 NT$1,407
復古慵懶風菱格撞色v領長袖針織毛衣
NT$981 NT$1,961
【全3色】拼接ins原宿風潮流寬鬆連帽衛衣
溫柔百搭慵懶風蜻蜓撞色紐扣圓領針織
NT$906 NT$1,294
韓版寬鬆復古素面圓領排扣針織
NT$727 NT$1,454
寬鬆休閒氣質百搭圓領針織馬甲+格紋襯衫
NT$1,012 NT$1,445
寬鬆慵懶風兔子韓版顯瘦v領馬甲針織
蕾絲拼接V領長袖針織衫
NT$1,477
慵懶風高級感寬鬆拼色針織毛衣
NT$813 NT$1,162
必備百搭款加厚寬鬆半高領長袖針織衫
發熱衣推薦舒服保暖加厚磨毛長袖T恤
NT$675
韓版polo領加厚bf風套頭衛衣
NT$810
高級感軟糯慵懶風印花針織衫
洋氣撞色套頭半高領針織衫
NT$720
時髦率性韓版漸變色連帽大碼衛衣
舒服軟糯好感韓版寬鬆愛心印花v領針織毛衣
(12)
溫柔韓系慵懶風撞色寬鬆圓領針織毛衣
買兩件更划算! 不挑身材純色新款寬鬆打底衫顯瘦遮肉上衣
NT$513
新款高齡寬鬆加厚套頭撞色長袖衛衣
NT$1,103
新款小香風粉色V領軟糯慵懶毛衣
NT$798
(130)
簡約好搭半拉鏈高領落肩顯瘦連帽長袖衛衣
NT$1,187
時髦率性條紋拼接寬鬆套頭洋氣休閑連帽衛衣
休閒時尚簡約百搭條紋撞色連帽衛衣
(72)