稽核
Slopographic 的運作方式
這些應用程式在您的瀏覽器中執行。本頁列出它們使用的瀏覽器功能、它們可能發出的每一項網路請求,以及保存在您裝置上的內容,讓您可以自行核對每項說明。本頁的每一句敘述,都已對照公開儲存庫中的原始碼檢查過。
簡短版本
- 您的檔案會留在您的裝置上。應用程式沒有接收檔案的伺服器,也沒有任何程式碼會上傳您開啟或儲存的檔案。唯一的例外,是您允許 AI 按鈕把一份副本傳送到您自行連結的 AI 服務。
- 您在磁碟上選取的檔案,是透過瀏覽器的 File System Access API 讀寫,位於您所選的資料夾中。參見 瀏覽器 API。
- 資料保存在此裝置上瀏覽器自己的儲存空間中(IndexedDB 與 localStorage)。參見 保存的內容。
- 部分請求會離開網站,但僅限於 所有對外請求中列出的情況:您確認的下載、您連結的雲端備份、您以自己的金鑰連結的 AI 服務、您開啟的匯率,以及您接受的分析或廣告。
- AI 按鈕可使用您裝置上的模型、您自己電腦上的伺服器(例如 Ollama 或 LM Studio),或您自己的金鑰連接 Claude、ChatGPT 或 Gemini 等服務。使用金鑰時,您的提問會從瀏覽器直接送到該供應商。參見 AI 按鈕。
- 首頁每次造訪都會載入 Google Analytics 程式碼,分析功能設為拒絕。其他頁面只有在您接受分析後才會載入。只有在您接受廣告後,廣告才會載入。
白話說明
我的檔案會去哪裡?
哪裡都不去。當您開啟照片、PDF 或試算表時,應用程式會在此瀏覽器分頁中讀取它。沒有上傳步驟,也沒有可以接收檔案的 Slopographic 伺服器。您儲存的內容會存到您自己的磁碟,或存到此裝置上此瀏覽器的儲存空間。只有當您以自己的金鑰連結 AI 服務並允許時,才會有副本傳送到該服務(參見 AI 按鈕)。
為什麼應用程式有時會下載東西?
部分功能需要大型檔案,而大多數人從未用到:AI 模型(用於移除背景、辨識文字或轉錄語音)、影片引擎(用於轉換影片),或其他書寫系統的字型。這些檔案只會在您使用該功能時才取得,而且是在應用程式告知檔案用途與大小之後,並保存在瀏覽器中,因此只需下載一次。您自己的檔案永遠不屬於這項請求的一部分。
可以離線使用嗎?
可以,首次造訪之後即可。網站自身的檔案會由瀏覽器保存,因此應用程式不連線也能開啟與使用。只有您尚未下載的內容(模型或字型)才需要網路。
需要安裝任何東西嗎?
不需要。只要在手機、平板或電腦的瀏覽器中開啟應用程式即可開始使用。首次造訪之後,即使沒有網際網路也能繼續使用。想在主畫面放上圖示嗎?在 iPhone 或 iPad 上,點選分享,再點選「加入主畫面」。在 Android 上,開啟瀏覽器選單並點選「新增至主畫面」。在電腦上,按一下網址列中的安裝圖示。您不需要 App Store 或 Google Play,您的檔案也會留在您的裝置上。
AI 按鈕會傳送什麼內容?傳到哪裡?
這取決於您選擇的模型。裝置上的模型(需要 WebGPU,且只需下載一次)會在此分頁內回答,您的提問不會離開裝置。Ollama、LM Studio 與類似的伺服器在您自己的電腦上執行,或在您設定好的網路中的某台電腦上執行。若您以自己的金鑰使用 Claude、ChatGPT、Gemini、OpenRouter 或 Groq 等服務,您的訊息會從瀏覽器直接送到該供應商,中間沒有 Slopographic 的伺服器,並適用其條款與價格。只有在面板詢問並且您允許之後,才會傳送檔案或您作品的圖片副本(您可以只允許單次請求、單次造訪,或永久允許,並可在 AI 權限中收回)。AI 製作或修改的圖片(生成圖片、以 AI 編輯)需要您連結的圖片服務,例如使用您自己金鑰的 OpenAI、Gemini 或 OpenRouter:瀏覽器本身無法繪製這些圖片。裝置上的模型與您自己電腦上的模型不需付費;Gemini、Groq 與 Mistral 有免費方案,OpenRouter 則提供免費模型(面板會標示為「免費」)。金鑰只會保留在此分頁中直到您關閉分頁,只有在您勾選「在此裝置上記住」時,才會保存在此瀏覽器中。使用 OpenRouter 時,您也可以不貼上金鑰,改按「以 OpenRouter 登入」:瀏覽器會前往 openrouter.ai,您在該處允許存取,返回時,本頁會直接向 OpenRouter 為此瀏覽器索取金鑰。登入過程直接發生在您的瀏覽器與 OpenRouter 之間,不會經過 Slopographic 的伺服器。費用由您自己的 OpenRouter 額度支付,金鑰的保存方式與貼上的金鑰完全相同;您可以在 openrouter.ai/settings/keys 設定上限或撤銷,而「忘記金鑰」會將它從此瀏覽器中移除。
AI 代理程式可以使用這些應用程式嗎?
在支援 WebMCP 的瀏覽器中可以:瀏覽器中的助理,或透過瀏覽器擴充功能連結到您電腦上的代理程式,可以執行應用程式的命令、File convert 轉換與工作流程,並開啟、儲存或下載檔案。它以 id 指稱您的檔案;工作在此分頁中執行,應用程式不上傳任何內容,但代理程式會看到工具回報的結果。任何會刪除或取代您作品的操作,都會先詢問您。WebMCP 仍是早期草案:Chrome 以試用版提供(版本 149 至 156),並且需要旗標才能使用;Edge 需要旗標;Firefox 與 Safari 尚未提供。可在設定中關閉,或在說明的「AI 代理程式」中關閉。
我可以自行核對嗎?
可以。原始碼是公開的,下方各節列出應用程式使用的每項瀏覽器功能、它可能發出的每項請求,以及製作該功能的檔案。您也可以開啟瀏覽器的開發人員工具,前往「網路」分頁並觀察:開啟與儲存您的檔案不會發出任何請求。
從 Claude Code 與其他 AI 應用程式使用 Slopographic
即將推出:您電腦上的 AI 應用程式,例如 Claude Code、Codex、Cursor、VS Code 或 Claude Desktop,可以使用您在瀏覽器中開啟的 Slopographic 應用程式:真正的命令、轉換與工作流程,您的檔案會送入,結果會以檔案形式回到您的電腦。它透過 Slopographic MCP 伺服器運作,這是 AI 應用程式在您的電腦上啟動的一個小程式。除了 AI 應用程式本身,不需要帳戶,也不需要安裝其他東西。
- Claude Code:輸入
/plugin marketplace add slopographic/claude-plugin,然後輸入/plugin install slopographic@slopographic。只需做一次。 - 輸入
/slopographic:slop-connect(如果您願意,可以在後面加上應用程式名稱,例如photoslop)。Claude Code 會在瀏覽器中開啟 Slopographic,並顯示一組簡短的代碼。 - Chrome 會詢問一次,是否允許此網站使用此裝置上的應用程式與服務。請選擇允許:頁面要靠它才能連上您電腦上的 Claude Code。頁面只會與您自己的電腦(127.0.0.1)通訊,不會連到您的網路。
- 在頁面中輸入代碼。頁面隨後會在角落顯示「Claude Code 已連結 · 中斷連結」。按下中斷連結,或關閉分頁,即可結束連線。
每個分頁分別配對,且代碼只能使用一次。沒有它,您電腦上的其他程式都無法使用此頁面。會刪除或取代您作品的操作,仍會在頁面中先詢問您,與 AI 面板的做法相同。任何 Slopographic 頁面都可以從命令選擇區連結:按 Ctrl+K(Mac 上為 ⌘K),然後選擇「連結 AI 應用程式…」。
其他 AI 應用程式(Codex、Gemini CLI、Cursor、VS Code、Windsurf、Claude Desktop)的設定說明,會在腳本執行時顯示於此。
ChatGPT 的對話只能連到網際網路上的伺服器,因此目前無法使用這個本機伺服器。ChatGPT 桌面版中的 Codex 可以使用。
瀏覽器 API,以及各項規格
檔案路徑是各個 API 主要的使用位置。如需其餘的位置,請在儲存庫中搜尋 API 名稱。
| 瀏覽器 API | 用途 | 程式碼位置 | 規格 |
|---|---|---|---|
File System Access:window.showDirectoryPicker、FileSystemDirectoryHandle、createWritable | Slop Drive 中的本機磁碟、雲端同步的備份資料夾、Gallery 資料夾匯入(唯讀),以及從磁碟載入 AI 模型資料夾。僅限 Chrome 與 Edge。寫入時只有在檔案關閉時才會取代舊檔。 | drive/js/core/prov-dir.js, drive/js/ui/prov-drives.js, shared/sync/providers/local.js, gallery/js/io/source.js, shared/ai/webllm.js | wicg.github.io/file-system-access · MDN |
| IndexedDB | Slop Drive 檔案、資料夾控制代碼、業務紀錄、字型與 AI 模型儲存,以及加密的登入權杖。完整清單見 保存的內容。 | shared/hub.js, drive/js/core/drives-store.js, shared/data/store.js, shared/sync/tokens.js, shared/library/store.js | w3.org/TR/IndexedDB · MDN |
| localStorage | 小型設定:您的同意選擇、雲端同步設定、各應用程式的設定,以及 Drive 檢視偏好。 | shared/consent/state.js, shared/sync/config.js, shared/profile/profile.js, drive/js/core/util.js | WHATWG HTML, Web Storage · MDN |
| sessionStorage | 只在雲端登入轉址進行期間保存的登入狀態。分頁關閉時清除。 | shared/sync/sync.js | WHATWG HTML, Web Storage |
| Origin Private File System | 未使用。程式碼中沒有 navigator.storage.getDirectory 呼叫。 | 無 | WHATWG File System |
| Service Worker | 供離線使用。每個應用程式頁面載入後都會註冊。它只回應同源的 GET 請求。 | service-worker.js, shared/pwa.js | w3.org/TR/service-workers · MDN |
| Cache Storage | 網站自身檔案的副本、去背模型檔案,以及您下載後的 AI 聊天模型檔案。 | service-worker.js, shared/cutout/loader.js, shared/ai/webllm.js | W3C Service Workers, Cache objects · MDN |
| Web App Manifest | 讓瀏覽器可以把網站安裝為應用程式。宣告名稱、圖示與起始頁面。 | manifest.webmanifest | w3.org/TR/appmanifest · MDN |
Storage Manager:navigator.storage.persist()、estimate() | 在安裝後或獨立模式中,要求瀏覽器保留此網站的儲存空間。Slop Storage 會先詢問您,再向瀏覽器提出要求。並顯示儲存空間的使用量。 | shared/pwa.js, shared/storage/storage.js | WHATWG Storage · MDN |
| Web Worker | 把繁重的工作移出頁面執行:影像去背、放大、AI 工具推論,以及 PDF 建立。 | shared/cutout/cutout.js, upscale/js/engine/engine.js, aitools/common.js, pdf/js/io/build.js | WHATWG HTML, Workers · MDN |
| WebAssembly | 為 AI 工具、放大、影像轉 3D、臉部偵測與去背執行內建的 ONNX Runtime Web,使用單一執行緒。聊天應用程式所用的 WebLLM 函式庫也是以 WebAssembly 為基礎。 | aitools/workers/ort.js, upscale/js/engine/worker.js, img3d/js/model/depth.js, shared/faces/index.js, shared/ai/webllm.js | WebAssembly Core spec · MDN |
| WebGPU | 聊天應用程式會檢查您的電腦能執行什麼,去背工作執行緒則會要求 GPU 介面卡。在 Slop AI 與每個應用程式的 AI 面板中,於 GPU 上執行聊天模型。 | shared/ai/sysinfo.js, shared/cutout/worker.js, shared/ai/webllm.js | w3.org/TR/webgpu · MDN |
| WebGL 2 | 3D 預覽,以及 SlopCut 中的色彩分級。 | 3d/js/render/stage.js, drive/js/core/render3d.js, slopcut/js/render/grade.js | Khronos WebGL 2.0 spec · MDN |
| Canvas 2D 與 OffscreenCanvas | 幾乎每個應用程式中的繪圖、影像編輯與匯出。 | 約 130 個檔案呼叫 getContext('2d'),例如 photoslop/js/io/save.js | WHATWG HTML, Canvas · MDN |
| File 與 Blob,拖放 | 開啟您選取或拖放到頁面上的檔案。除非您儲存或分享,否則檔案不會離開頁面。 | shared/drop/, shared/preview/chrome.js | W3C File API · MDN |
Web Crypto:crypto.subtle | 在儲存每個下載的檔案之前進行 SHA-256 檢查,並以 AES-GCM 加密登入權杖。 | shared/cutout/loader.js, shared/library/store.js, shared/sync/tokens.js | w3.org/TR/WebCryptoAPI · MDN |
| Notifications | 提醒的瀏覽器通知,只有在您按下按鈕允許之後才會出現。 | reminders/js/app.js, shared/reminders/engine.js | WHATWG Notifications · MDN |
| BroadcastChannel | 本網站開啟的各分頁之間的訊息(頻道 slopographic)。只留在瀏覽器內。 | shared/hub.js | WHATWG HTML, Broadcasting · MDN |
Web Share:navigator.share() | 系統的分享面板,只有在您按下「分享」時才會出現。之後由系統把檔案傳送到您選擇的應用程式。 | shared/preview/chrome.js, ai/js/ui/speccard.js | w3.org/TR/web-share · MDN |
WebMCP:document.modelContext.registerTool() | 在瀏覽器有此 API,且「允許 AI 代理程式使用此應用程式」設定為開啟時,會把應用程式的操作提供給瀏覽器中的 AI 代理程式作為工具(命令、檔案操作、以 id 指稱的檔案)。工具在頁面中執行。每個頁面的 head 中都有 origin trial 權杖。 | shared/agent/webmcp.js, shared/agent/workspace.js, shared/agent/boot.js | W3C Web Machine Learning CG draft · Chrome |
| WebSocket | 連到您電腦上 AI 應用程式的連線(Slopographic MCP 伺服器),只有在您選擇「連結 AI 應用程式…」之後才會建立。它連到 ws://127.0.0.1,僅限這台電腦。 | shared/agent/bridge.js | WHATWG WebSockets |
| Fetch | 應用程式中的每一項網路請求。完整清單見對外請求。 | 約 30 個檔案中的約 35 處 fetch( 呼叫(有幾處是註解) | WHATWG Fetch · MDN |
此裝置上保存的內容
以下所有內容都保存在此瀏覽器中,位於此裝置上。這裡的任何內容都不會傳送到伺服器。每個網站都有自己的儲存空間,因此同一個應用程式在另一個瀏覽器中會有自己的副本。
| 名稱 | 類型 | 保存的內容 | 設定位置 |
|---|---|---|---|
slop-drive | IndexedDB | Slop Drive 的檔案與資料夾,包括檔案內容。 | shared/hub.js |
slop-drive-folders | IndexedDB | 已命名的本機磁碟:每個資料夾的控制代碼及其名稱。移除磁碟只會忘記該控制代碼。 | drive/js/core/drives-store.js |
slop-sync, slop-sync-local | IndexedDB | 加密的雲端登入權杖(AES-GCM,並以不可匯出的金鑰加密)。所選備份資料夾的控制代碼。 | shared/sync/tokens.js, shared/sync/providers/local.js |
slop-data | IndexedDB | 業務紀錄:客戶、產品、庫存、發票、付款與分類帳項目(shared/data/schema.js)。 | shared/data/store.js |
slop-library | IndexedDB | 從「取得更多」安裝的字型,以及您新增的字型檔案。 | shared/library/store.js |
slop-aitools, slop-ai | IndexedDB | 您安裝的 AI 工具模型,以及 AI 聊天應用程式中的對話。 | aitools/models.js, ai/js/core/store.js |
slop-session | IndexedDB | 各應用程式目前的檢視與尚未儲存的草稿,讓您下次回來時可以從離開的地方繼續。 | shared/session/session.js |
slop-consent | localStorage | 您對分析、廣告與匯率的選擇。在您選擇之前都是關閉的。 | shared/consent/state.js |
slop-sync | localStorage | 雲端同步設定:您的 OAuth 用戶端 ID 與上次同步時間。權杖不保存在這裡。 | shared/sync/config.js |
slop-ai-keys | IndexedDB | 您的 AI 金鑰,只有在您勾選「在此裝置上記住」時才會保存。沒有勾選時,金鑰只留在此分頁(sessionStorage)中,關閉分頁即會消失。備份中不會包含金鑰。 | shared/ai/cloud/keys.js |
slop-ai.cloud, slop-ai.imagegen, slop-ai.permissions | localStorage | 您選擇的 AI 服務與模型、您的支出上限、圖片設定,以及您授予的 AI 權限。永遠不包含金鑰。 | shared/ai/cloud/keys.js, shared/ai/imagegen/core.js, shared/ai/permissions.js |
slop-ai.signin | sessionStorage | 在您以 OpenRouter 登入的過程中:證明登入是從此分頁開始的一次性 PKCE verifier 與 state。用一次即失效,關閉分頁後即消失,從不是金鑰。 | shared/ai/cloud/signin.js |
slop.agents | localStorage | 當您關閉「允許 AI 代理程式使用此應用程式」時會存為「off」。開啟期間不保存任何內容。 | shared/agent/boot.js |
slop.bridge | sessionStorage | 當此分頁與您電腦上的 AI 應用程式配對時:連接埠與配對權杖,讓重新載入後仍保持連線。中斷連結或關閉分頁後即消失。 | shared/agent/bridge.js |
slop-profile | localStorage | 您變更過、與預設值不同的各應用程式設定。 | shared/profile/profile.js |
slop-drive.prefs, slop-drive.theme | localStorage | Slop Drive 的檢視偏好與佈景主題。 | drive/js/core/util.js |
slopographic-v38 | Cache Storage | 網站自身檔案的副本,讓網站可以離線使用。 | service-worker.js |
slop-cutout-v1 | Cache Storage | 去背的模型檔案,已完成 SHA-256 檢查。 | shared/cutout/loader.js |
Cookie:網站程式碼從不寫入 Cookie(儲存庫中沒有 document.cookie 呼叫)。您的同意選擇保存在 localStorage 中,而非 Cookie。Google 的分析與廣告腳本執行時,可能會設定它們自己的 Cookie。Cookie 與分析一節說明它們何時執行。
對外請求:所有可能發出請求的地方
以下清單對此儲存庫而言是完整的:它來自對每一個 fetch(、XMLHttpRequest、腳本與圖片網址,以及程式碼中每一個外部網址的搜尋。除了下方所述才會載入的分析與廣告腳本之外,應用程式不會載入任何第三方腳本、字型或樣式表。沒有第三方字型,也沒有 iframe。
| 目的地 | 應用程式或部分 | 原因 | 發生時機 |
|---|---|---|---|
www.googletagmanager.com(Google Analytics,ID G-HW6FWQVFK3) | 首頁(index.html);其他頁面透過 shared/consent/consent-mode.js | 頁面瀏覽量計數 | 首頁:每次造訪都會,分析功能在您接受之前設為拒絕。其他頁面:只有在您接受分析之後。 |
pagead2.googlesyndication.com(AdSense) | 有廣告版位的頁面(shared/ads/ads.js) | 廣告 | 只有在您接受廣告之後。由 shared/consent/consent-mode.js 中唯一的載入程式載入。 |
huggingface.co,以及其儲存主機 hf.co 與 xethub.hf.co | AI 聊天(shared/ai/webllm.js、ai/js/core/engine.js);AI 工具與 OCR 應用程式(aitools/model-registry.js、aitools/models.js) | 模型檔案:OCR(PP-OCRv4)、標籤,以及聊天模型 | 在您按下下載,或在「取得更多」中安裝模型,並確認其大小與授權之後。AI 工具會檢查每個檔案的 SHA-256,且檔案必須來自 Hugging Face 主機或 slopographic/cdn 儲存庫。 |
cdn.jsdelivr.net(jsDelivr,僅限固定版本的 /gh/slopographic/cdn@) | 來自 slopographic/cdn 儲存庫的每一個檔案(shared/cdn/assets.js):「取得更多」的素材包、語音與 OCR 模型、HEIC、相機 RAW、3D 與影片引擎 | 下方儲存庫的較快速且已快取的副本;超過 20 MB 的檔案來自 raw.githubusercontent.com | 發生時機與下一列相同。如果 jsDelivr 沒有回應或傳回錯誤的位元組,同一個檔案會從 raw.githubusercontent.com 取得,並以相同方式檢查。 |
raw.githubusercontent.com | AI 聊天(shared/ai/webllm.js、GPU 核心);「取得更多」的素材包(shared/library/packs.json) | 聊天模型所用的核心;來自 github.com/google/fonts(OFL)的字型檔;用於書寫阿拉伯文、中文或印地文等文字的語言字型(Noto,OFL);Slop Upscale 所用的 Real-ESRGAN 4 倍模型、影像轉 3D 所用的深度模型,以及 Slop Transcribe 與 AI 工具所用的語音模型(Whisper、KB-Whisper、NB-Whisper;aitools/speech-models.js),皆來自 slopographic/cdn 儲存庫 | 當您在「取得更多」或「語言與模型」對話方塊中按下下載並確認,或載入聊天模型時。當您以某種需要語言字型的文字書寫時,也會下載該字型(例如在 Slop PDF 中):應用程式會先詢問,除非您選擇自動下載語言字型(shared/fonts/jit.js)。每個檔案在保存前都會以 SHA-256 核對。 |
accounts.google.com, oauth2.googleapis.com, www.googleapis.com | 同步到您自己的 Google Drive 雲端(shared/sync/providers/gdrive.js、pkce.js、config.js) | 登入後,在一個可選的資料夾中備份並還原一個備份檔。使用 drive.file 範圍,只能存取此應用程式建立的檔案,或您選取的檔案。 | 只有在您以自己的 OAuth 用戶端 ID 連結,並按下備份或同步按鈕時。 |
www.dropbox.com, api.dropboxapi.com, content.dropboxapi.com | 同步到 Dropbox 雲端(shared/sync/providers/dropbox.js) | 與 Google Drive 相同,只是改用 Dropbox | 只有在您連結並按下備份或同步按鈕時。 |
data-api.ecb.europa.eu | 匯率(shared/data/rates-ecb.js,從設定開啟,並由 Ledger 與 Calculator 讀取) | 歐洲中央銀行每日的歐元參考匯率 | 只有在匯率類別開啟且您按下更新時。只有在您也勾選時,開啟時更新才會執行。 |
| 從其他網站拖曳過來的圖片網址 | PhotoSlop(photoslop/js/app/tabs.js) | 在新分頁中開啟拖曳過來的圖片 | 只有在您把其他頁面的圖片拖到 PhotoSlop 上時。 |
slopographic.com(網站本身) | 每個頁面、首頁的標誌、Service Worker | 網站自身的檔案 | 每次造訪時。此來源不會請求其他任何內容。 |
您以自己的金鑰連結的 AI 服務,例如 api.anthropic.com、api.openai.com、generativelanguage.googleapis.com、openrouter.ai 或 api.groq.com,或您為 Ollama、LM Studio 或其他伺服器輸入的位址 | AI 面板(shared/ai/cloud/,服務清單位於 shared/ai/cloud/catalog/);AI 圖片(shared/ai/imagegen/) | 您的訊息、應用程式的工具與其結果,以及只有在您允許後才會送出的檔案或圖片副本;AI 圖片則包含提示詞,若為編輯,還包含圖片(至多 1536 px) | 只有在您加入自己的金鑰或伺服器位址並送出請求後。裝置上的模型不會傳送任何內容。 |
openrouter.ai/auth(您會前往的頁面)與 openrouter.ai/api/v1/auth/keys | AI 面板中的「以 OpenRouter 登入」(shared/ai/cloud/signin.js) | 前往登入頁面時:本頁要返回的位址、一組 PKCE challenge 與一個隨機 state。前往金鑰位址時:OpenRouter 給的一次性代碼與其 PKCE verifier;OpenRouter 會回傳一把供此瀏覽器使用的金鑰。直接在您的瀏覽器與 OpenRouter 之間進行,不經過 Slopographic 的伺服器。 | 只有在您按下「以 OpenRouter 登入」時。 |
127.0.0.1(您自己的電腦) | 連結 AI 應用程式(shared/agent/bridge.js) | 頁面與您的 AI 應用程式所啟動的 Slopographic MCP 伺服器通訊:應用程式的工具、其結果,以及您要求傳送或儲存的檔案 | 只有在您選擇「連結 AI 應用程式…」並輸入 AI 應用程式所顯示的代碼之後。Chrome 會先詢問。 |
| 僅為連結:Patreon、YouTube 與 Vimeo | 贊助連結(shared/consent/donate.js)、Notes 的影片連結(notes/js/video.js) | 點按時於新分頁開啟該網站 | 只有在您點按時。筆記中的影片會顯示為連結,而不是嵌入的播放器或縮圖。 |
有兩件事看起來像網路使用,實際上不是:當開發人員手動執行時,tools/vendor-codemirror.mjs 會從 cdn.jsdelivr.net 取得套件,以更新隨附的程式碼。應用程式從不載入該 CDN。郵件檢視器(eml/js/frame.js)以內容安全政策(CSP)封鎖郵件中的遠端圖片與腳本,因此開啟郵件不會載入遠端圖片或腳本。
Cookie 與分析
- 由網站程式碼保存:同意選擇保存在 localStorage(
slop-consent)中,分析、廣告與匯率在您選擇之前都是關閉的。您隨時可以在瀏覽器中清除儲存空間。 - 網站程式碼不保存的:沒有 Cookie,也沒有帳戶。儲存庫從不寫入 Cookie。
- Google Analytics:在首頁,程式碼載入時
analytics_storage設為拒絕。只有在您接受分析後才會開啟。在其他頁面,只有在您接受之後才會載入。 - Google 自己的腳本在執行時,可能會設定它們自己的 Cookie。這由 Google 決定,而不是 Slopographic 的程式碼。下方的稽核步驟會顯示瀏覽器實際保存了什麼。
- 廣告:AdSense 只有在您接受廣告後才會載入。拒絕廣告會讓廣告版位保持空白。
離線工作
首次造訪之後,網站自身的檔案會由 Service Worker(service-worker.js,其檔案清單位於 sw-precache.js)保存在 Cache Storage 中。頁面會先透過網路檢查,然後從快取取得,最後才顯示離線頁面。您的檔案不在 Service Worker 的快取中:它們位於您選取的資料夾中,或位於 IndexedDB 中。關閉網路時,應用程式仍可繼續運作。下載項目(上述的模型與字型套件)在首次時需要網路。
如何自行核對
- 網路分頁,頁面載入後。開啟應用程式,按 F12(Mac 上為 Cmd+Option+I),然後開啟「網路」分頁。勾選「保留記錄」,再重新載入。查看「網域」欄。一般造訪時,您應該只會看到
slopographic.com,首頁還會有 Google 的分析網域。 - 網路分頁,離線。在「網路」分頁中,開啟節流選單並選擇「離線」。重新載入,然後開啟一個檔案、編輯並儲存。應用程式應該仍可運作。需要下載的項目會說明這一點。
- 應用程式分頁,儲存空間。在 Chrome 或 Edge 中,開啟「應用程式」分頁。在「儲存空間」下方,查看本機儲存空間、工作階段儲存空間、IndexedDB、Cookie、Cache Storage 與 Service Worker。將您看到的內容與本頁的表格比對。
- 接受或拒絕,然後比較。在同意提示列中拒絕分析與廣告,重新載入,然後再次查看「網路」分頁。接著接受它們,看看會出現哪些請求。
- 閱讀原始碼。原始碼公開於 GitHub 上的 slopographic 儲存庫。在其中搜尋
fetch(、indexedDB.open、localStorage或showDirectoryPicker,即可確認本頁的任何一列。同意程式碼位於shared/consent/,雲端同步位於shared/sync/,下載清單位於shared/library/與aitools/。
本機資料夾(File System Access API)需要 Chrome 或 Edge。Firefox 與 Safari 不提供這項功能,應用程式會在適用的地方說明。