Para extraer el contenido completo de un editor CodeMirror en chatgpt.com usando la consola del navegador, es importante tener en cuenta que CodeMirror puede estar utilizando un sistema de virtualización, lo que significa que solo renderiza las líneas visibles en el DOM. Esto explica por qué tu enfoque actual solo captura una parte del contenido.
Problema
El método actual (extractVisibleContent
) solo obtiene el contenido de las líneas que están visibles en ese momento, lo que resulta en un registro de salida incompleto. Cuando intentas acceder al contenido utilizando elementos con la clase .cm-line
, solo obtienes un subconjunto de líneas que son visibles en la interfaz.
Solución Propuesta
Para recuperar todo el contenido del editor CodeMirror, puedes utilizar su API de forma directa en lugar de depender de la representación del DOM. CodeMirror normalmente tiene funciones que permiten acceder al contenido completo sin necesidad de depender de la visibilidad de las líneas.
Aquí hay un enfoque modificado para extraer el contenido completo:
(() => {
const extractFullContent = () => {
const editorElement = document.querySelector('#codemirror .cm-editor');
if (!editorElement) {
console.warn('Editor not found.');
return null;
}
// Obtener la instancia de CodeMirror
const codeMirrorInstance = editorElement.CodeMirror; // Ajusta este selector si es necesario
if (!codeMirrorInstance) {
console.warn('CodeMirror instance not found.');
return null;
}
// Extraer el contenido completo del editor
const fullContent = codeMirrorInstance.getValue();
return fullContent;
};
const onReady = () => {
setTimeout(() => {
const content = extractFullContent();
if (content !== null) {
console.log('Extracted editor content:', content);
}
}, 1000);
};
if (document.readyState === "complete" || document.readyState === "interactive") {
onReady();
} else {
document.addEventListener('DOMContentLoaded', onReady);
}
})();
Explicación del Código Modificado
-
Obtener la Instancia de CodeMirror: En lugar de buscar las líneas visibles, accedemos a la instancia de CodeMirror directamente. Esto se suele hacer a través del elemento del editor donde se almacena la instancia.
-
Método
getValue
: Utilizamos el métodogetValue()
de CodeMirror, que devuelve todo el contenido del editor, independientemente de las líneas que están visibles en la pantalla. - Ejecución: El código se asegura de que se ejecute después de que el DOM esté completamente cargado para evitar errores relacionados con la referencia al editor.
Con este enfoque, deberías poder extraer el contenido completo del editor CodeMirror en chatgpt.com sin preocuparte por la virtualización de las líneas.