線上購物清單是一款小巧、私密的瀏覽器工具,最多可在本地保存 100 項雜貨品項,方便你規劃一趟購物行程、一邊進行一邊勾選項目,並在準備將購物表交給外送應用程式、網路商店或列印清單時特別編製一份乾淨的文字版檢查清單。你所輸入的內容不會被傳送至任何地方。本工具不要求建立帳號、不會呼叫遠端資料庫,也不會夾帶任何包含你清單的分析酬載。它所儲存的每一列資料,都只存在於單一瀏覽器設定檔中,使用只有本頁面會讀取的版本化金鑰。這項單一的設計決定,也正是本工具其他行為如此運作的原因:可預期的輸入、精確的文字匯出,以及對「我的清單究竟在哪裡?」這個問題的明確回答。

瀏覽器雜貨檢查清單實際上保存了什麼
清單中的每一列,都是由四個屬性組成的小型組合:你輸入的名稱、從下拉選單中選擇的單一分類、在未勾選與已勾選之間切換的購買標記,以及該頁面在內部使用的瀏覽器產生識別碼。沒有價格欄位、沒有數量欄位、沒有條碼、沒有品牌選擇器,也沒有獨立的備註欄位。分類選項是固定的八個——農產品、奶製品、烘焙食品、肉類、儲糧、冷凍品、家用品,以及其他——而「其他」始終可用於任何不適合歸類的項目。分類是為了整理畫面上的項目所做的有限介面選擇,並非營養分類、商店分類法或食品安全聲明。請將其視為一個有助於你快速掃描冗長清單的便利標籤,而非針對產品應歸於何處的建議。
由於資料結構刻意保持精簡,資料層可在每次新增時強制執行嚴格規則。空白名稱會被拒絕。經過整理空白字元後,長度超過 80 個 Unicode 碼位名稱會被拒絕。不在預設集內的分類會被拒絕。重複的識別碼與重複的名稱會被拒絕,且已儲存的清單絕不會因失敗的嘗試而被修改。純粹的邏輯測試涵蓋了所有這些路徑,且該頁面僅在每次成功操作後,才將結果有效的陣列寫回 localStorage。
精確的複製格式:寫入你剪貼簿的內容
點擊「複製清單」時,瀏覽器會將目前檢查清單的純文字版本寫入剪貼簿,且僅在瀏覽器確認寫入後,頁面才會回報成功。此確認機制至關重要——如果權限遭到拒絕,本工具不會假裝複製成功。它會請你手動選取可見的清單,並使用作業系統的一般鍵盤快速鍵。底層的寫入作業採用 MDN 的 Clipboard.writeText 參考文件 中所記錄的標準介面,該介面支援目前所有主流瀏覽器的最新版本。
格式本身刻意保持簡單。一行一個項目,沒有編號、沒有額外註解、沒有自動排序。未勾選的列以 [ ] 開頭;已購買的列則以 [x] 開頭。在該前綴之後,該行依序保存你輸入的原始項目名稱(經過修剪與合併空白字元後),接著是破折號,後面接著所選的分類。因此,你即將貼進外送應用程式備註欄位的一小段奶製品清單,可以貼成如下形式:
[ ] Butter — Dairy [ ] Yogurt — Dairy [ ] Eggs — Other
一旦你將 Butter 標示為已購買並重新複製,同樣的清單就會變成:
[x] Butter — Dairy [ ] Yogurt — Dairy [ ] Eggs — Other
其他列不會移動、重新分組或重新排序。標示為已購買絕不會重寫名稱、分類或順序。匯出內容是瀏覽器儲存空間中目前保存各列的直接鏡像,每行僅在開頭加上兩個簡短的標記。
項目如何被新增、勾選與清除
完整的當日購物流程很簡短,且與頁面上的控制項一一對應:
- 在打算全程用於此次購物的瀏覽器設定檔中,開啟 線上購物清單。
- 在新增欄位中輸入項目名稱,並從下拉選單中選擇最接近的分類。
- 提交該列。工具會修剪多餘的空白字元、將連續空白合併為單一空白,且若名稱為空、長度超過 80 個碼位、無論大小寫皆已存在於清單中,或不在八個分類的白名單內,則會拒絕此次新增。
- 重複以上步驟,直到完整計畫就緒。在 100 項時停止,因為這是硬性上限。
- 當項目進入你的購物袋或外送預約時,將每一列標示為已購買。勾選動作僅會切換購買標記。
- 使用「移除」來刪除你不再需要的單一列,或使用「清除已購買」來一次移除所有已勾選的列,同時保持未勾選各列的原始順序。
- 當你準備切換到雜貨服務時,點擊「複製清單」,將剪貼簿內容貼進訂單表格的搜尋框、購物車或備註欄位,然後照常下單。
整個流程無需建立帳號、無需上傳你的計畫,也不依賴特定的瀏覽器外掛。唯一的持續性儲存,就是該頁面在每次成功操作後所執行的 localStorage 寫入。
重複偵測、名稱長度與 100 項上限
本工具的大部分行為由一組固定的小型規則所控管,而非透過巧妙的推論,這使得清單可預期且易於理解。下表摘要說明與你所輸入內容互動的規則:
| 功能 | 行為 |
|---|---|
| 分類集 | 農產品、奶製品、烘焙食品、肉類、儲糧、冷凍品、家用品、其他——有限八個選項 |
| 項目名稱長度 | 修剪與合併空白字元後,1 至 80 個 Unicode 碼位 |
| 清單大小上限 | 100 個唯一項目,硬性上限 |
| 空白字元處理 | 修剪開頭與結尾的空白;將多個內部空白縮減為一個 |
| 重複規則 | 針對標準化名稱進行不區分大小寫的比對——Milk 與 milk 會刻意視為衝突 |
| 相關詞規則 | Apple 與 apples 是不同項目;工具不會推論它們指涉同一產品 |
| 數量處理 | 無——不進行合併、運算或單位換算 |
| 購買切換 | 僅切換購買標記;名稱與分類保持新增時的原樣 |
| 移除 | 刪除你所選的單一列 |
| 清除已購買 | 移除所有已勾選的列,保持未勾選各列的原始順序 |
| 複製清單匯出 | 一行一個項目,精確的 [ ] 或 [x] 前綴,破折號,接著分類 |
| 儲存位置 | 僅限瀏覽器 localStorage;絕不上傳或同步 |
從此參考表中可衍生出兩個實際的結論。第一,錯誤是明確且可見的:空白名稱、過長名稱、重複識別碼、重複名稱或不在預設集內的分類,會回傳清楚的錯誤訊息,而非靜默地修改已儲存的清單。第二,由於本工具不進行數量合併、不推論品牌,也不認定相關名稱相同,你在匯出剪貼簿文字中所看見的,正是你所輸入的內容——僅進行修剪、單一空白處理,以及大小寫去重。
LocalStorage 的現實:「私密」的真正意涵
你所建立的清單不是雲端文件,也不是共用筆記。它存在於你目前正在使用的瀏覽器設定檔中,以版本化的 localStorage 金鑰儲存,且頁面僅在你再次載入本工具時讀取該金鑰。這對如何在多次購物行程中使用檢查清單有實質的影響。
- 清除網站資料會一併移除清單。如果你指示瀏覽器清除該工具網域的 Cookie 與網站儲存空間,檢查清單將一併消失,無法復原。
- 私密或無痕視窗不會持續保存。在私密視窗中建立的清單,會在該視窗關閉時立即消失。
- 切換瀏覽器或裝置不會轉移清單。你筆記型電腦上的檢查清單,在你手機上不會顯示,即使兩部裝置皆登入同一個作業系統帳號亦然。
- 瀏覽器清理工具可能會清除本機儲存空間。長時間使用的瀏覽器設定檔、安全性工具及某些隱私外掛,可能會在未事先通知的情況下輪換或清除本機儲存空間。
- 瀏覽器設定檔的存取權等同於清單的存取權。任何能開啟同一個瀏覽器設定檔的人,皆可讀取你所儲存的項目。
基於上述理由,請將該清單視為單次購物行程的工作型草稿,而非長期的保存檔。請在將用於下單的瀏覽器中建立清單、在關閉分頁前複製結果,並將其貼進你所訂購的雜貨服務中。若你想要跨多次行程的永久紀錄,請將檢查清單複製到你自行控管的筆記應用程式或試算表中,而非依賴 localStorage 來記住它。本機端儲存行為的瀏覽器技術參考資料,記錄於 MDN 的 Window.localStorage 頁面。
何時瀏覽器儲存的檢查清單是合適的工具
一個最多 100 項、本地儲存的檢查清單,適合用於規模小、有限且個人實用的規劃工作。每週的雜貨採買、招待朋友前的一次性補貨、針對遺忘食材的一次追加外送,或是你想複製到外送預約中的儲糧盤點,皆相當符合此範圍。該檢查清單也是一個實用的草稿區,可讓你比較外送服務預期的用語措辭,與你實際想使用的用語措辭,而這些草稿除了你所輸入的瀏覽器設定檔外,不會儲存於任何其他地方。
相同的設計並不適合其他用途。本工具不提供飲食指導、過敏建議、預算編列、價格計算或庫存追蹤,且分類標籤不應被解讀為營養資訊或商店的走道配置。它不提供雲端備份、多人編輯、分享連結、登入、跨裝置同步或通知功能,並明確警告不要將密碼、付款資訊、醫療細節或其他敏感資料放在瀏覽器儲存空間中。請僅用於雜貨與家用品項;若清單很重要,請在關閉分頁前複製結果,並將 localStorage 紀錄視為其本質——一個私密的、單一裝置、單一行程的工作型檢查清單。
若你在權衡各種選項,如何決定「愛心符號複製貼上」是否適合你 對此有詳細說明。