/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)}T恤|女性時尚 - vivi-look 台灣|流行時尚女裝 已加入購物車 會員登入收藏購物車所有商品新品上市人氣熱銷限時折扣特別企劃加一元 多一件上衣類T恤襯衫衛衣針織/毛衣細肩帶/背心風格支線清新學院風韓版優雅風可愛漫畫風百變休閒風洋裝類長洋裝短洋裝印花洋裝牛仔洋裝蕾絲洋裝針織洋裝吊帶褲套裝下著類寬褲長褲牛仔褲裙類內搭褲短褲外套類休閒夾克西裝外套罩衫風衣外套羽絨外套鞋子休閒鞋平底鞋高跟鞋靴子涼鞋內衣泳衣情趣內衣bra內衣內褲居家服/睡衣配件飾品包包墨鏡冰袖皮帶雨具/雨衣襪子圍巾/手套帽/披肩後跟貼 T恤最新上架價格由低到高價格由高到低最高人氣【7色】休閒時尚設計感假兩件polo領寬鬆短袖T恤NT$1,123 (37)百變休閒時尚圓領泡泡袖素色五分袖T恤NT$1,121 (29)時尚百搭遮肉竹節棉寬鬆燙鑽設計感t卹NT$1,121 (37)日系簡約時尚素面拼接寬鬆蝙蝠袖圓領T恤NT$1,119 (25)早秋新品人気沸騰優雅撞色V領假兩件/疊穿長袖T恤NT$1,118 (33)韓版寬鬆圓領套頭蝙蝠袖破洞復古做舊彩條紋短袖t卹NT$1,114 (207)法式優雅小香風V領時尚精緻洋氣蕾絲長袖T恤NT$1,103 (5)吸睛注目復古印花圓領綁帶短袖T恤NT$1,103 (27)簡約好搭時尚中長款字母破洞長袖T恤NT$1,103 (5)輕甜女孩設計感釘珠荷葉邊短袖T恤NT$1,103 (141)知性亮眼設計感復古盤扣蕾絲立領短袖T恤NT$1,103 (5)溫柔好感甜美針織撞色修身釘珠T恤NT$1,103 (103)簡約質感休閒雪紡素面寬鬆顯瘦T恤NT$1,103 (95)百變休閒簡約圓領拼接撞色套頭T恤NT$1,097 (6)氣質微奢簡約綠色翻領修身針織T恤NT$1,094 (30)高端小香風掐腰輕奢法式名媛上衣NT$1,086 (7)溫柔好感復古刺綉圓領棉短袖T恤NT$1,082 (258)百搭時髦設計感假兩件印花v領荷葉袖T恤NT$1,080 (38)TOP推薦时髦率性撞色條紋v領短袖T恤NT$1,080 (114)Korea正韓休閒寬鬆條紋百搭顯瘦T恤NT$1,076 (41)大尺碼冰絲針織衫春夏新款V領短袖寬鬆條紋半袖T卹NT$1,071 (32)【9色】簡約百搭花邊圓領短袖針織T恤NT$1,069 (87)強力推薦百搭紐扣設計感素色針織T恤NT$1,066 (4)強力推薦休閒素色圓領拼接百搭半袖t恤NT$1,064 (169)氣質微奢設計感撞色v領雪紡短袖T恤NT$1,063 (22)時髦率性假兩件拉繩V領彩虹色條紋針織衫短袖NT$1,058 (9)超好搭配簡約2色可選開叉長袖T恤NT$1,058 (28)氣質微奢設計感蝴蝶結拼接方領短袖T恤NT$1,058 (7)超百搭簡約撞色短袖春夏圓領T恤NT$1,058 (63)個性風格復古設計感黑色不規則圓領開叉T恤NT$1,058 (34)吸睛注目時尚設計感圓領撞色拼接T恤NT$1,055 (39)持續熱賣中網紗拼接圓領素色T恤NT$1,046 (77)知性美型洋氣百搭蕾絲拼接長袖T恤NT$1,035 (89)全場精選韓版時尚拼接翻領長袖T恤NT$1,035 (535)簡約鉤花鏤空襯衫寬鬆大碼繡花棉麻顯瘦上衣NT$1,035 (8)簡約好搭設計感顯瘦蝴蝶結一字肩T恤NT$1,035 (32)簡約百搭假兩件拼接條紋撞色短袖針織T恤NT$1,035 (38)時尚好搭简约素色镂空蕾丝五分袖灯笼袖T恤NT$1,035 (691)休閒時尚百搭素面海軍領長袖T恤NT$1,035 (5)吸睛注目復古撞色翻領單排扣短袖針織T恤NT$1,035 (29)知性美型時尚圓領短袖印花T恤NT$1,035 (35)本週新品韓版翻領紐扣橫條紋泡泡袖T恤NT$1,033 (25)超級爆款簡約撞色圓領短袖拼接T恤NT$1,033 (397)超好搭配優雅素色長袖圓領內搭打底T恤NT$1,031 (111)簡約質感休閒圓領短袖輕薄針織T恤NT$1,026 (27)當季流行休閒印花圓領套頭短袖T恤NT$1,024 (34)百搭時髦設計感刺綉海軍領短袖T恤NT$1,024 (31)甜美系百搭立體蝴蝶結花朵圓領短袖T恤NT$1,024 (33)休閒時尚百搭可愛貓咪印花中長款短袖T恤NT$1,024 (31)簡約好搭休閑V領紐扣寬鬆設計感素面T恤NT$1,019 (33)新品來襲時尚蕾絲鈎花蝴蝶結方領T恤NT$1,016 (31)韓系知性純色假兩件V領顯瘦長袖打底T恤NT$1,013 (10)氣質微奢時尚印花撞色雪紡短袖T恤NT$1,013 (30)韓版設計感鏤空素面圓領短袖T恤NT$1,013 (7)百變休閒時尚素色短袖荷葉袖短款T恤NT$1,013 (28)溫柔好感時尚寬鬆撞色七分袖圓領針織T恤NT$1,013 (5)Korea正韓氣質顯瘦圓領網紗拼接花朵T恤NT$1,013 (166)Korea正韓時尚素面圓領燈籠袖胸針T恤NT$1,013 (24)韓版簡約法式復古圓領泡泡袖短袖T恤NT$1,013 (134)隨性休閒復古簡約半高領無袖時尚純棉短袖T恤NT$1,013 (32)«12345678...1516»
已加入購物車
T恤
【7色】休閒時尚設計感假兩件polo領寬鬆短袖T恤
NT$1,123
(37)
百變休閒時尚圓領泡泡袖素色五分袖T恤
NT$1,121
(29)
時尚百搭遮肉竹節棉寬鬆燙鑽設計感t卹
日系簡約時尚素面拼接寬鬆蝙蝠袖圓領T恤
NT$1,119
(25)
早秋新品人気沸騰優雅撞色V領假兩件/疊穿長袖T恤
NT$1,118
(33)
韓版寬鬆圓領套頭蝙蝠袖破洞復古做舊彩條紋短袖t卹
NT$1,114
(207)
法式優雅小香風V領時尚精緻洋氣蕾絲長袖T恤
NT$1,103
(5)
吸睛注目復古印花圓領綁帶短袖T恤
(27)
簡約好搭時尚中長款字母破洞長袖T恤
輕甜女孩設計感釘珠荷葉邊短袖T恤
(141)
知性亮眼設計感復古盤扣蕾絲立領短袖T恤
溫柔好感甜美針織撞色修身釘珠T恤
(103)
簡約質感休閒雪紡素面寬鬆顯瘦T恤
(95)
百變休閒簡約圓領拼接撞色套頭T恤
NT$1,097
(6)
氣質微奢簡約綠色翻領修身針織T恤
NT$1,094
(30)
高端小香風掐腰輕奢法式名媛上衣
NT$1,086
(7)
溫柔好感復古刺綉圓領棉短袖T恤
NT$1,082
(258)
百搭時髦設計感假兩件印花v領荷葉袖T恤
NT$1,080
(38)
TOP推薦时髦率性撞色條紋v領短袖T恤
(114)
Korea正韓休閒寬鬆條紋百搭顯瘦T恤
NT$1,076
(41)
大尺碼冰絲針織衫春夏新款V領短袖寬鬆條紋半袖T卹
NT$1,071
(32)
【9色】簡約百搭花邊圓領短袖針織T恤
NT$1,069
(87)
強力推薦百搭紐扣設計感素色針織T恤
NT$1,066
(4)
強力推薦休閒素色圓領拼接百搭半袖t恤
NT$1,064
(169)
氣質微奢設計感撞色v領雪紡短袖T恤
NT$1,063
(22)
時髦率性假兩件拉繩V領彩虹色條紋針織衫短袖
NT$1,058
(9)
超好搭配簡約2色可選開叉長袖T恤
(28)
氣質微奢設計感蝴蝶結拼接方領短袖T恤
超百搭簡約撞色短袖春夏圓領T恤
(63)
個性風格復古設計感黑色不規則圓領開叉T恤
(34)
吸睛注目時尚設計感圓領撞色拼接T恤
NT$1,055
(39)
持續熱賣中網紗拼接圓領素色T恤
NT$1,046
(77)
知性美型洋氣百搭蕾絲拼接長袖T恤
NT$1,035
(89)
全場精選韓版時尚拼接翻領長袖T恤
(535)
簡約鉤花鏤空襯衫寬鬆大碼繡花棉麻顯瘦上衣
(8)
簡約好搭設計感顯瘦蝴蝶結一字肩T恤
簡約百搭假兩件拼接條紋撞色短袖針織T恤
時尚好搭简约素色镂空蕾丝五分袖灯笼袖T恤
(691)
休閒時尚百搭素面海軍領長袖T恤
吸睛注目復古撞色翻領單排扣短袖針織T恤
知性美型時尚圓領短袖印花T恤
(35)
本週新品韓版翻領紐扣橫條紋泡泡袖T恤
NT$1,033
超級爆款簡約撞色圓領短袖拼接T恤
(397)
超好搭配優雅素色長袖圓領內搭打底T恤
NT$1,031
(111)
簡約質感休閒圓領短袖輕薄針織T恤
NT$1,026
當季流行休閒印花圓領套頭短袖T恤
NT$1,024
百搭時髦設計感刺綉海軍領短袖T恤
(31)
甜美系百搭立體蝴蝶結花朵圓領短袖T恤
休閒時尚百搭可愛貓咪印花中長款短袖T恤
簡約好搭休閑V領紐扣寬鬆設計感素面T恤
NT$1,019
新品來襲時尚蕾絲鈎花蝴蝶結方領T恤
NT$1,016
韓系知性純色假兩件V領顯瘦長袖打底T恤
NT$1,013
(10)
氣質微奢時尚印花撞色雪紡短袖T恤
韓版設計感鏤空素面圓領短袖T恤
百變休閒時尚素色短袖荷葉袖短款T恤
溫柔好感時尚寬鬆撞色七分袖圓領針織T恤
Korea正韓氣質顯瘦圓領網紗拼接花朵T恤
(166)
Korea正韓時尚素面圓領燈籠袖胸針T恤
(24)
韓版簡約法式復古圓領泡泡袖短袖T恤
(134)
隨性休閒復古簡約半高領無袖時尚純棉短袖T恤