/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$1,077 (168)超級爆款韓版甜美V領荷葉邊鏤空短袖襯衫NT$1,234 (107)持續熱賣中優雅撞色V領五分袖襯衫NT$968 (493)吸睛注目高級感漸變色單排釦長袖絲綢襯衫NT$1,035 (37)設計感復古素色五分袖套頭泡泡袖襯衫NT$1,047 (419)簡約質感休閒豎條紋撞色七分袖單排釦襯衫NT$1,376 (91)簡約質感輕熟高端定制素色V領無袖襯衫NT$866 (855)TOP推薦甜美花朵刺綉泡泡袖七分袖襯衫NT$1,035 (376)當季流行復古素色長袖V領鏤空襯衫NT$1,046 (32)吸睛注目簡約素色無袖短款春夏襯衫NT$1,001 (30)限時搶購清新印花V領蕾絲邊泡泡袖襯衫NT$1,078 (10)設計感簡約素色短袖春夏套頭綁帶襯衫NT$1,275 (35)全網最紅設計感條紋顯瘦V領寬鬆襯衫NT$788 (32)持續熱賣中時尚素色七分袖泡泡袖立領套頭襯衫NT$1,164 (6)熱賣中時尚豎條紋長袖翻領單排扣襯衫NT$1,017 (8)超值好康休閒格紋暈染荷葉邊飛袖短袖襯衫NT$1,062 (396)超百搭輕熟純色長袖綁帶蝴蝶結單排扣襯衫NT$1,234 (79)職場麗人輕熟純色長袖套頭襯衫NT$1,497 (123)視覺顯瘦輕熟V領鏤空七分袖雪紡襯衫NT$1,859 (179)清新甜漾法式方領拼接紐扣短袖雪紡襯衫NT$990 (171)持續熱賣中輕熟印花拼接翻領長袖襯衫NT$1,080 (27)TOP推薦韓版清新碎花春夏雪紡七分袖襯衫NT$1,112 (260)TOP推薦優雅V領綁帶水墨印花雪紡襯衫NT$1,080 (109)超百搭簡約素色短袖插肩袖春夏單排扣襯衫NT$1,103 (25)時尚好搭日系素色V領燈籠袖套頭襯衫NT$1,153 (3)浪漫風甜美碎花圓領套頭長袖襯衫NT$1,163 (295)超好搭簡約氣質v領荷葉邊法式長袖襯衫NT$991 (146)百變休閒簡約時尚素色寬鬆長袖襯衫NT$968 (89)時尚好搭簡約春夏印花燈籠袖荷葉邊襯衫NT$1,383 (138)質感碎花七分袖時尚雪紡襯衫NT$968 (257)通勤格紋翻領七分袖襯衫NT$1,497 (8)時尚好搭圓點綁帶無袖襯衫NT$1,011 (109)TOP推薦V領時尚簡約襯衫NT$974 (82)港風浪漫印花甜美無袖襯衫NT$1,103 (265)全場精選簡約素色長袖拼接單排扣襯衫NT$720 (217)本週新品簡約印花七分袖套頭顯瘦襯衫NT$1,497 (43)輕熟通勤寬鬆時尚長版襯衫NT$1,494 (116)簡約質感時尚氣質立領條紋不規則襯衫NT$814 (458)大熱門豎條紋時尚V領泡泡袖襯衫NT$838 (165)超級爆款簡約時尚刺綉蕾絲氣質套頭襯衫NT$1,058 (10)时髦率性簡約印花立領薄款短袖襯衫NT$1,010 (963)職場麗人簡約通勤條紋打底夏季針織襯衫NT$1,295 (111)OL穿搭素色簡約燈籠袖襯衫NT$1,224 (64)【熱銷補貨到】文藝風韓版學院風燈籠袖素色壓褶圓領襯衫NT$684 (420)超級爆款簡約輕熟素色不規則套頭立領襯衫NT$1,153 (87)超級爆款时髦率性超百搭撞色拼接牛仔襯衫NT$1,165 (122)超級爆款簡約甜美素色七分袖半高領針織襯衫NT$755 (187)大熱門印花復古輕熟七分袖襯衫NT$1,100 (236)職場麗人蕾絲優雅泡泡袖襯衫NT$1,311 (298)时髦率性復古素色翻領春秋牛仔襯衫NT$1,024 (117)浪漫女人蝴蝶結泡泡袖雪紡甜美襯衫NT$1,391 (139)涼感輕薄印花燈籠袖鏤空襯衫NT$1,497 (207)TOP推薦輕熟休閑素色褶邊袖綁帶荷葉領襯衫NT$1,333 (167)職場麗人簡約復古印花燈籠袖圓領襯衫NT$900 (129)設計感波西米亞休閑燈籠袖碎花刺繡立領襯衫NT$990 (198)吸睛注目時尚名媛高檔風素色泡泡袖蕾絲半高領襯衫NT$1,273 (134)當季流行甜美學院風素色燈籠袖拼接鏤空襯衫NT$1,130 (247)百變休閒簡約質感撞色條紋中長款襯衫NT$990 (98)時尚好搭百變休閒條紋刺綉v領襯衫NT$1,311 (268)大熱門通勤撞色條紋立領襯衫NT$1,103 (172)«12...91011121314151617»
已加入購物車
襯衫
職場麗人優雅素色蝴蝶結綁帶短袖襯衫
NT$1,077
(168)
超級爆款韓版甜美V領荷葉邊鏤空短袖襯衫
NT$1,234
(107)
持續熱賣中優雅撞色V領五分袖襯衫
NT$968
(493)
吸睛注目高級感漸變色單排釦長袖絲綢襯衫
NT$1,035
(37)
設計感復古素色五分袖套頭泡泡袖襯衫
NT$1,047
(419)
簡約質感休閒豎條紋撞色七分袖單排釦襯衫
NT$1,376
(91)
簡約質感輕熟高端定制素色V領無袖襯衫
NT$866
(855)
TOP推薦甜美花朵刺綉泡泡袖七分袖襯衫
(376)
當季流行復古素色長袖V領鏤空襯衫
NT$1,046
(32)
吸睛注目簡約素色無袖短款春夏襯衫
NT$1,001
(30)
限時搶購清新印花V領蕾絲邊泡泡袖襯衫
NT$1,078
(10)
設計感簡約素色短袖春夏套頭綁帶襯衫
NT$1,275
(35)
全網最紅設計感條紋顯瘦V領寬鬆襯衫
NT$788
持續熱賣中時尚素色七分袖泡泡袖立領套頭襯衫
NT$1,164
(6)
熱賣中時尚豎條紋長袖翻領單排扣襯衫
NT$1,017
(8)
超值好康休閒格紋暈染荷葉邊飛袖短袖襯衫
NT$1,062
(396)
超百搭輕熟純色長袖綁帶蝴蝶結單排扣襯衫
(79)
職場麗人輕熟純色長袖套頭襯衫
NT$1,497
(123)
視覺顯瘦輕熟V領鏤空七分袖雪紡襯衫
NT$1,859
(179)
清新甜漾法式方領拼接紐扣短袖雪紡襯衫
NT$990
(171)
持續熱賣中輕熟印花拼接翻領長袖襯衫
NT$1,080
(27)
TOP推薦韓版清新碎花春夏雪紡七分袖襯衫
NT$1,112
(260)
TOP推薦優雅V領綁帶水墨印花雪紡襯衫
(109)
超百搭簡約素色短袖插肩袖春夏單排扣襯衫
NT$1,103
(25)
時尚好搭日系素色V領燈籠袖套頭襯衫
NT$1,153
(3)
浪漫風甜美碎花圓領套頭長袖襯衫
NT$1,163
(295)
超好搭簡約氣質v領荷葉邊法式長袖襯衫
NT$991
(146)
百變休閒簡約時尚素色寬鬆長袖襯衫
(89)
時尚好搭簡約春夏印花燈籠袖荷葉邊襯衫
NT$1,383
(138)
質感碎花七分袖時尚雪紡襯衫
(257)
通勤格紋翻領七分袖襯衫
時尚好搭圓點綁帶無袖襯衫
NT$1,011
TOP推薦V領時尚簡約襯衫
NT$974
(82)
港風浪漫印花甜美無袖襯衫
(265)
全場精選簡約素色長袖拼接單排扣襯衫
NT$720
(217)
本週新品簡約印花七分袖套頭顯瘦襯衫
(43)
輕熟通勤寬鬆時尚長版襯衫
NT$1,494
(116)
簡約質感時尚氣質立領條紋不規則襯衫
NT$814
(458)
大熱門豎條紋時尚V領泡泡袖襯衫
NT$838
(165)
超級爆款簡約時尚刺綉蕾絲氣質套頭襯衫
NT$1,058
时髦率性簡約印花立領薄款短袖襯衫
NT$1,010
(963)
職場麗人簡約通勤條紋打底夏季針織襯衫
NT$1,295
(111)
OL穿搭素色簡約燈籠袖襯衫
NT$1,224
(64)
【熱銷補貨到】文藝風韓版學院風燈籠袖素色壓褶圓領襯衫
NT$684
(420)
超級爆款簡約輕熟素色不規則套頭立領襯衫
(87)
超級爆款时髦率性超百搭撞色拼接牛仔襯衫
NT$1,165
(122)
超級爆款簡約甜美素色七分袖半高領針織襯衫
NT$755
(187)
大熱門印花復古輕熟七分袖襯衫
NT$1,100
(236)
職場麗人蕾絲優雅泡泡袖襯衫
NT$1,311
(298)
时髦率性復古素色翻領春秋牛仔襯衫
NT$1,024
(117)
浪漫女人蝴蝶結泡泡袖雪紡甜美襯衫
NT$1,391
(139)
涼感輕薄印花燈籠袖鏤空襯衫
(207)
TOP推薦輕熟休閑素色褶邊袖綁帶荷葉領襯衫
NT$1,333
(167)
職場麗人簡約復古印花燈籠袖圓領襯衫
NT$900
(129)
設計感波西米亞休閑燈籠袖碎花刺繡立領襯衫
(198)
吸睛注目時尚名媛高檔風素色泡泡袖蕾絲半高領襯衫
NT$1,273
(134)
當季流行甜美學院風素色燈籠袖拼接鏤空襯衫
NT$1,130
(247)
百變休閒簡約質感撞色條紋中長款襯衫
(98)
時尚好搭百變休閒條紋刺綉v領襯衫
(268)
大熱門通勤撞色條紋立領襯衫
(172)