唯讀模式
本頁說明 readonly 設定與 enable() / disable() 如何切換唯讀,以及哪些元件會被停用。
運作方式
唯讀不是逐節點傳遞的旗標,而是對整棵已渲染的 DOM 批次切換 disabled 屬性:
| 觸發 | 動作 |
|---|---|
設定 readonly: true |
初次渲染完成後設定 body.dataset.readonly = 1,並對所有符合選擇器的元素加上 disabled |
editor.disable() |
同上(JSONEditor.js:178-183) |
editor.enable() |
設定 body.dataset.readonly = 0,並移除所有符合選擇器元素的 disabled(JSONEditor.js:171-176) |
選擇器為 selectorSubNodes(src/data.js):button:not(.collapsed), textarea, input, select。折疊按鈕不受影響,唯讀時仍可展開與收合節點。
之後建立的節點
節點重新渲染時,keyInput() 與 typeSelect() 會讀取 body.dataset.readonly,鍵輸入框與型別下拉選單維持停用;其餘元件(值輸入框、移除與新增子節點按鈕)由 #create() 重建時不會帶 disabled。因此唯讀狀態下若有節點重新渲染(例如經程式呼叫 import()),需再呼叫一次 disable()。
鉤子
切換唯讀不會觸發任何 Lifecycle 鉤子。