跳至主要內容
Lizely

JavaScript 測試場

在具備時間限制、獨立來源且封鎖網路的沙箱中執行簡短 JavaScript 程式碼。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.輸入不需要 DOM 或 Node.js API,且長度在限制內的 JavaScript 程式碼。
  2. 2.點選「執行 JavaScript」,建立全新的隔離 Worker 與沙箱。
  3. 3.查看主控台、結果、錯誤或逾時輸出,再修改並重新執行程式碼。

關於JavaScript 測試場

JavaScript 測試場會在本機執行簡短程式碼,並顯示主控台訊息、回傳值或錯誤。編輯器最多接受 30,000 個字元。每次執行都會建立新的密碼學隨機通道權杖、具備獨立來源的沙箱 iframe,以及專用 Web Worker。只有當訊息來源、固定標記與本次權杖全部相符時,工具才會接受結果。

使用者程式碼會先經過 JSON 編碼再插入頁面,小於符號也會被跳脫,因此即使字串含有結束 script 標籤,也無法跳出 iframe 標記。iframe 允許執行指令碼,但不允許同源存取、表單、導覽、彈出視窗或下載。其內容安全政策預設拒絕所有資源、封鎖網路連線,只允許行內啟動程式與 Blob Worker,並停用基準 URL 和表單動作。

程式會在 Worker 而非介面執行緒中執行。無限迴圈不會凍結母頁面,iframe 會在 1,500 毫秒後終止 Worker。每次重新執行都會取代先前的沙箱。工具會擷取 console.log 與 console.error,若最終運算式可格式化,也會將它顯示為結果。Promise 會等待至完成;若超過時限,Worker 便會終止。

Worker 環境沒有 DOM、document、window、localStorage、Cookie 或頁面工作階段,CSP 也會封鎖網路 fetch。因此它適合測試陣列、字串、物件、演算法、剖析、算術與語言特性,不適合執行瀏覽器介面程式。輸出會盡可能使用 JSON 格式,否則退回字串;循環參照或特殊物件可能會被簡化。

這層隔離是一道防禦邊界,不代表你可以放心執行未知或惡意程式碼。執行前請先檢查內容,切勿將密碼、API 金鑰、工作階段權杖、客戶隱私資料或專有原始碼貼入任何線上編輯器。本工具不會儲存專案,也不提供套件、import、Node.js API、TypeScript 編譯、除錯中斷點或永久檔案。

逾時限制是實際經過時間的防護措施,不是效能基準。瀏覽器排程會有所差異,非同步工作也可能在完成前遭到終止。正式程式碼應放在受版本控制的本機專案中,搭配測試、程式碼檢查、相依套件審查,以及實際執行該程式的執行環境。

方法與來源

限制原始碼長度;為每次執行產生密碼學隨機權杖;以 JSON 編碼程式碼並跳脫可結束 script 的字元;建立具備獨立來源、僅允許指令碼的 iframe,搭配預設拒絕且 connect-src 為 none 的 CSP;在 Blob Worker 中啟動程式;擷取 log、error 與 result 訊息;接受輸出前同時驗證 iframe 視窗、來源標記與權杖;限制保留的輸出筆數,並在完成或 1,500 毫秒後終止 Worker。

常見問題

程式碼可以存取這個頁面或我的 Cookie 嗎?
不可以。程式碼會在具備獨立來源的 iframe 內透過 Worker 執行,沒有同源存取權;訊息也必須帶有每次執行專用的權杖。
可以使用 fetch 或匯入套件嗎?
不可以。網路連線已封鎖,而且這裡沒有提供套件執行環境。
如果程式進入無限迴圈會怎樣?
Worker 與頁面彼此隔離,並會在 1,500 毫秒後遭到終止。
我可以把機密資料貼進編輯器嗎?
不可以。切勿將密碼、權杖、隱私資料或機密程式碼放入任何線上測試場。