文件 v1.2.1

唯讀模式

本頁說明 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 鉤子。

延伸閱讀

EN