/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$370 (43)时髦率性簡約豎條紋棉無袖春夏V領襯衫NT$405 (357)知性美型簡約圓領波點遮肉顯瘦襯衫NT$474 (37)【S-5XL】簡約清新通勤荷葉邊紐扣短袖雪紡襯衫NT$486 (419)本季亮點簡約百搭素面4色可選襯衫NT$513 (172)設計感韓版抽繩紐扣翻領工裝襯衫NT$513 (43)【3色】韓版簡約大尺碼豎條紋單排扣襯衫NT$529 (31)中國風條紋褶皺襯衫女春季復古防曬襯衣日係原創氛圍上衣設計感NT$540 (3)新品 半價法式赫本風絕美公主風格獨特超好看黑色襯衫NT$459 NT$918 (29)韓版時尚v領網紗針織拼接燈籠袖襯衫NT$540 (93)高級感通勤職業氣質雪紡紗長袖襯衫NT$540 (9)知性美型通勤風撞色修身翻領百搭襯衫NT$540 (112)簡約百搭polo領長袖襯衫NT$567 (6)半價氛圍感洋氣拼接雪紡紗襯衫NT$482 NT$964 (25)【S-5XL】韓版寬鬆慵懶風條紋撞色長袖襯衫NT$567 (4)半價韓版時尚百搭條紋撞色紐扣襯衫NT$482 NT$964 (294)【4色】清新韓系設計感後背綁帶蝙蝠袖印花襯衫NT$586 (709)法式插肩袖蕾絲衫韓版小眾設計感遮肉顯瘦襯衫NT$594 (10)甜美系文藝風荷葉邊蕾絲拼接V領顯瘦襯衫NT$594 (10)清新寬鬆圓領/v領/娃娃領甜美碎花蓬蓬襯衫NT$594 (7)新款雪紡紗設計感洋氣時尚長袖襯衫NT$594 (4)溫柔系法式別致洋氣早秋燈籠袖襯衫NT$594 (10)簡約好搭寬鬆復古棉麻印花大碼女裝T恤NT$594 (5)簡約好搭舒服軟糯打褶收腰V領小飛袖針織上衣NT$594 (8)半價韓版設計感條紋撞色燈籠袖紐扣襯衫NT$509 NT$1,017 (244)【S-5XL】知性亮眼工作通勤韓版簡約質感單排扣短袖襯衫NT$598 (142)溫柔系韓版寬鬆蕾絲鏤空v領雪紡襯衫NT$616 (99)韓版時尚寬鬆格紋百搭長袖襯衫NT$621 (158)氣質微奢復古水墨印花撞色翻領長袖襯衫NT$621 (6)Korea正韓溫柔好感大尺碼喇叭袖蝴蝶結綁帶雪紡襯衫NT$621 (7)韓系溫柔風泡泡袖褶皺方領襯衫NT$621 (8)時尚款網紅上衣假兩件/疊穿圓領襯衫T恤NT$622 (11)半價超好康溫柔係簡約海軍領燈籠袖襯衫NT$532 NT$1,063 (164)限時搶購文藝風復古棉麻燈籠袖襯衫NT$625 (30)寬鬆小眾復古設計感飛袖荷葉邊V領襯衫NT$632 (103)韓版復古娃娃領條紋減齡長袖襯衫NT$634 (33)氣質微奢優雅蝴蝶結綁帶雪紡短袖襯衫NT$639 (89)復古假兩件設計感獨特別致長袖襯衫NT$647 (3)韓版寬鬆油畫塗鴉口袋短袖娃娃領襯衫NT$648 (10)懶人時尚港風防曬寬鬆格紋長袖襯衫NT$648 (60)復古甜美花朵刺繡繫帶長袖防曬襯衫寬鬆百搭顯瘦上衣NT$648 (3)寬鬆設計感小眾銀狐圓領泡泡袖短袖襯衫NT$648 (11)溫柔型簡約全身花紋v領蝴蝶結襯衫NT$648 (25)溫柔好感百搭顯瘦花邊立領長袖襯衫NT$648 (10)韓版簡約復古條紋單排扣翻領長袖襯衫NT$648 (7)強檔驚喜休閒條紋圓領五分袖短款襯衫NT$648 (261)清爽幹練簡約時尚素面翻領寬鬆長袖襯衫NT$648 (30)新款燈籠袖小香風撞色格子長袖襯衫NT$648 (11)柔軟森系法式氣質波點印花百搭泡泡袖寬鬆上衣襯衫NT$648 (3)知性亮眼復古文藝風印花撞色圓領襯衫NT$657 (6)【4色】韓版簡約設計感方領短袖襯衫NT$658 (109)清新甜美碎花娃娃領七分袖棉麻襯衫NT$664 (96)千鳥格雪紡紗蝴蝶結長袖襯衫NT$675 (12)新品 半價發熱衣推薦高質感加厚雙面立領木耳邊加厚襯衫NT$574 NT$1,148 (10)半價高級小衆設計感百搭長袖針織拼接襯衫NT$574 NT$1,148 (8)吸睛注目簡約豎條紋紐扣V領無袖口袋襯衫NT$675 (120)秋季法式優雅氣質條紋雪紡襯衫V領口袋漂亮長袖上衣NT$675 (10)時尚百搭減齡洋氣假兩件長袖襯衫NT$675 (4)韓版甜美復古寬鬆顯瘦方領雪紡短袖襯衫NT$675 (41)慵懶風韓版顯瘦純色翻領長袖襯衫NT$678 (9)«12345678...1617»
已加入購物車
襯衫
秋冬新款長袖套頭百搭純色韓版半高領學生修身針織打底衫上衣
NT$370
(43)
时髦率性簡約豎條紋棉無袖春夏V領襯衫
NT$405
(357)
知性美型簡約圓領波點遮肉顯瘦襯衫
NT$474
(37)
【S-5XL】簡約清新通勤荷葉邊紐扣短袖雪紡襯衫
NT$486
(419)
本季亮點簡約百搭素面4色可選襯衫
NT$513
(172)
設計感韓版抽繩紐扣翻領工裝襯衫
【3色】韓版簡約大尺碼豎條紋單排扣襯衫
NT$529
(31)
中國風條紋褶皺襯衫女春季復古防曬襯衣日係原創氛圍上衣設計感
NT$540
(3)
法式赫本風絕美公主風格獨特超好看黑色襯衫
NT$459 NT$918
(29)
韓版時尚v領網紗針織拼接燈籠袖襯衫
(93)
高級感通勤職業氣質雪紡紗長袖襯衫
(9)
知性美型通勤風撞色修身翻領百搭襯衫
(112)
簡約百搭polo領長袖襯衫
NT$567
(6)
氛圍感洋氣拼接雪紡紗襯衫
NT$482 NT$964
(25)
【S-5XL】韓版寬鬆慵懶風條紋撞色長袖襯衫
(4)
韓版時尚百搭條紋撞色紐扣襯衫
(294)
【4色】清新韓系設計感後背綁帶蝙蝠袖印花襯衫
NT$586
(709)
法式插肩袖蕾絲衫韓版小眾設計感遮肉顯瘦襯衫
NT$594
(10)
甜美系文藝風荷葉邊蕾絲拼接V領顯瘦襯衫
清新寬鬆圓領/v領/娃娃領甜美碎花蓬蓬襯衫
(7)
新款雪紡紗設計感洋氣時尚長袖襯衫
溫柔系法式別致洋氣早秋燈籠袖襯衫
簡約好搭寬鬆復古棉麻印花大碼女裝T恤
(5)
簡約好搭舒服軟糯打褶收腰V領小飛袖針織上衣
(8)
韓版設計感條紋撞色燈籠袖紐扣襯衫
NT$509 NT$1,017
(244)
【S-5XL】知性亮眼工作通勤韓版簡約質感單排扣短袖襯衫
NT$598
(142)
溫柔系韓版寬鬆蕾絲鏤空v領雪紡襯衫
NT$616
(99)
韓版時尚寬鬆格紋百搭長袖襯衫
NT$621
(158)
氣質微奢復古水墨印花撞色翻領長袖襯衫
Korea正韓溫柔好感大尺碼喇叭袖蝴蝶結綁帶雪紡襯衫
韓系溫柔風泡泡袖褶皺方領襯衫
時尚款網紅上衣假兩件/疊穿圓領襯衫T恤
NT$622
(11)
超好康溫柔係簡約海軍領燈籠袖襯衫
NT$532 NT$1,063
(164)
限時搶購文藝風復古棉麻燈籠袖襯衫
NT$625
(30)
寬鬆小眾復古設計感飛袖荷葉邊V領襯衫
NT$632
(103)
韓版復古娃娃領條紋減齡長袖襯衫
NT$634
(33)
氣質微奢優雅蝴蝶結綁帶雪紡短袖襯衫
NT$639
(89)
復古假兩件設計感獨特別致長袖襯衫
NT$647
韓版寬鬆油畫塗鴉口袋短袖娃娃領襯衫
NT$648
懶人時尚港風防曬寬鬆格紋長袖襯衫
(60)
復古甜美花朵刺繡繫帶長袖防曬襯衫寬鬆百搭顯瘦上衣
寬鬆設計感小眾銀狐圓領泡泡袖短袖襯衫
溫柔型簡約全身花紋v領蝴蝶結襯衫
溫柔好感百搭顯瘦花邊立領長袖襯衫
韓版簡約復古條紋單排扣翻領長袖襯衫
強檔驚喜休閒條紋圓領五分袖短款襯衫
(261)
清爽幹練簡約時尚素面翻領寬鬆長袖襯衫
新款燈籠袖小香風撞色格子長袖襯衫
柔軟森系法式氣質波點印花百搭泡泡袖寬鬆上衣襯衫
知性亮眼復古文藝風印花撞色圓領襯衫
NT$657
【4色】韓版簡約設計感方領短袖襯衫
NT$658
(109)
清新甜美碎花娃娃領七分袖棉麻襯衫
NT$664
(96)
千鳥格雪紡紗蝴蝶結長袖襯衫
NT$675
(12)
發熱衣推薦高質感加厚雙面立領木耳邊加厚襯衫
NT$574 NT$1,148
高級小衆設計感百搭長袖針織拼接襯衫
吸睛注目簡約豎條紋紐扣V領無袖口袋襯衫
(120)
秋季法式優雅氣質條紋雪紡襯衫V領口袋漂亮長袖上衣
時尚百搭減齡洋氣假兩件長袖襯衫
韓版甜美復古寬鬆顯瘦方領雪紡短袖襯衫
(41)
慵懶風韓版顯瘦純色翻領長袖襯衫
NT$678