Vue搜尋結果晚回來蓋掉新結果:取消舊請求
搜尋框已改成新字詞,畫面卻突然跳回舊結果。請求發出得早,不代表一定先回來;舊請求較慢、新請求較快,若兩個回應都直接寫入同一份結果,最後完成的舊請求就會蓋掉新內容...
Vue列表刪掉一行後輸入內容跑位:key不能隨便用索引
列表第二行的備註明明填好了,刪掉第一行後,備註卻出現在另一筆資料旁邊。先看每行的key:如果使用陣列索引,刪除或排序後,同一個位置就可能代表不同資料,元件裡的輸...
Laravel送出同一表單兩次:讓資料庫唯一條件擋重複
訪客連按兩次送出,資料表多了兩筆相同詢問。把按鈕停用能減少誤按,但請求也可能被重試,或從另一個視窗送來。若產品要求同一次提交只保存一筆,資料庫需要有能識別這次提...
Laravel列表每頁都查很多次資料:找出關聯N+1
列表只有十幾筆資料,資料庫卻被查了幾十次。常見原因是先取得文章,再在每一列讀作者、分類或其他關聯;畫面看起來只是在印一個名稱,實際上卻可能每次都發出新的 SQL...
Laravel表單更新到別人的資料:用Policy核資源所有權
使用者只能看到自己的編輯按鈕,卻把網址裡的文章編號換掉,就能修改別人的文章。問題不在按鈕藏得不夠好,而是伺服器收到更新請求後,沒有確認這筆資料是否允許由目前使用...
長網址把文章撐出螢幕:區分overflow-wrap與word-break
文章裡貼了一條長網址,閱讀區卻被它撐出螢幕。先分清是文字沒有可用斷點,還是容器本身寫死寬度;兩種原因看起來相似,修改位置不同。 要讓讀者看完整網址,通常不必截成...
網站格線縮到平板就擠成一團:用minmax控制卡片寬度
三張卡片明明都設成1fr,縮窄閱讀區後卻變成一張很寬、另外兩張被擠小。先不要增加gap,也不要直接把字縮到看不清楚;欄位可能被其中一張卡片的內容最小寬度撐住。 ...
下載檔名亂碼怎麼查:核Content-Disposition與UTF-8
網站上的下載連結寫「模板檢查表」,存到電腦後卻變成一串百分比編碼,或只剩download.csv。先別重新壓縮整包檔案:瀏覽器採用的檔名,可能來自下載回應的Co...
模板展示頁圖片很多,怎麼讓訪客快速找到差異
模板展示頁放了很多圖片,訪客卻還是問「兩款差在哪裡」。問題可能不在圖片太少,而是他正拿 A 的首頁對照 B 的文章頁,或必須來回捲動才找得到同一個位置。把圖片按...
搜尋找不到結果時寫什麼:讓訪客能改字再找
搜尋沒有結果,訪客接下來要做什麼?只留一行「找不到資料」,他得重新回想剛才輸入的字,再猜網站有沒有別的內容。空結果頁至少要留下這次查詢、讓他能改字重搜,並提供一...
CSS黏住的側欄沒生效:檢查容器高度與overflow
側欄已寫position:sticky,捲動後卻整塊跟著消失。先別急著改成fixed;sticky會受到捲動祖先、容器邊界與元素高度限制,設定本身生效,仍可能沒...
網站第三方腳本載入失敗:讓核心內容先能用
第三方聊天、推薦或統計腳本載入失敗,不應讓整篇文章只剩轉圈圈。訪客來讀內容,至少要能看到正文、用普通連結前往下一頁,並知道附加功能現在能不能用。 先分清哪些功能...
