fix: 댓글 수정 execCommand 방식으로 변경 (React 상태 동기화)

This commit is contained in:
김보곤
2026-02-05 09:50:38 +09:00
parent 88c2e2454f
commit 86ccd55f5a

View File

@@ -418,7 +418,7 @@
"actions": [
{
"type": "evaluate",
"script": "(function(){ var textareas = Array.from(document.querySelectorAll('textarea')); var editTA = textareas.find(function(t){ return t.value && t.value.includes('첫 번째 테스트'); }); if(editTA){ var setter = Object.getOwnPropertyDescriptor(window.HTMLTextAreaElement.prototype,'value').set; setter.call(editTA, '수정된 첫 번째 댓글입니다.'); var tracker = editTA._valueTracker; if(tracker){ tracker.setValue(''); } editTA.dispatchEvent(new Event('input',{bubbles:true})); editTA.dispatchEvent(new Event('change',{bubbles:true})); return 'filled edit textarea (React tracker reset)'; } var inputs = Array.from(document.querySelectorAll('input[type=\"text\"]')); var editInput = inputs.find(function(i){ return i.value && i.value.includes('첫 번째 테스트'); }); if(editInput){ var inputSetter = Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,'value').set; inputSetter.call(editInput, '수정된 첫 번째 댓글입니다.'); var tracker2 = editInput._valueTracker; if(tracker2){ tracker2.setValue(''); } editInput.dispatchEvent(new Event('input',{bubbles:true})); editInput.dispatchEvent(new Event('change',{bubbles:true})); return 'filled edit input (React tracker reset)'; } var editables = document.querySelectorAll('[contenteditable=\"true\"]'); for(var i=0; i<editables.length; i++){ if(editables[i].textContent && editables[i].textContent.includes('첫 번째 테스트')){ editables[i].textContent = '수정된 첫 번째 댓글입니다.'; editables[i].dispatchEvent(new Event('input',{bubbles:true})); return 'filled contenteditable'; }} return 'edit element not found'; })()"
"script": "(function(){ var textareas = Array.from(document.querySelectorAll('textarea')); var editTA = textareas.find(function(t){ return t.value && t.value.includes('첫 번째 테스트'); }); if(editTA){ editTA.focus(); editTA.select(); document.execCommand('insertText', false, '수정된 첫 번째 댓글입니다.'); return 'filled edit textarea (execCommand)'; } var inputs = Array.from(document.querySelectorAll('input[type=\"text\"]')); var editInput = inputs.find(function(i){ return i.value && i.value.includes('첫 번째 테스트'); }); if(editInput){ editInput.focus(); editInput.select(); document.execCommand('insertText', false, '수정된 첫 번째 댓글입니다.'); return 'filled edit input (execCommand)'; } var editables = document.querySelectorAll('[contenteditable=\"true\"]'); for(var i=0; i<editables.length; i++){ if(editables[i].textContent && editables[i].textContent.includes('첫 번째 테스트')){ editables[i].focus(); var sel = window.getSelection(); var range = document.createRange(); range.selectNodeContents(editables[i]); sel.removeAllRanges(); sel.addRange(range); document.execCommand('insertText', false, '수정된 첫 번째 댓글입니다.'); return 'filled contenteditable (execCommand)'; }} return 'edit element not found'; })()"
}
]
},