La pregunta sobre la copia ciertamente se ha abordado antes. Me gustaría saber si esto se puede evitar: al pegar el portapapeles en un bloc de notas, es decir, necesito el texto sin formato, siempre hay una línea en blanco inicial y final en el texto copiado. ¿Alguna solución para el fragmento a continuación (o cualquier otro código sugerido) que realmente solo copie las dos líneas sin esta línea vacía inicial y final en texto sin formato?
[blank line] test1 test2 test3 test4 [blank line] let table = document.querySelector('#testTable'); let button = document.querySelector('#button'); function selectNode(node) { let range = document.createRange(); range.selectNodeContents(node) let select = window.getSelection() select.removeAllRanges() select.addRange(range) } button.addEventListener('click', function () { selectNode(table); document.execCommand('copy') }) <style> td { border: 1px solid black; } </style> <table collapsed id='testTable'> <tr> <td>test1</td> <td> </td> <td>test2</td> </tr> <tr> <td>test3</td> <td> </td> <td>test4</td> </tr> </table> <br /> <button id="button">select</button>Si bien no sé el motivo, agregar un elemento<tbody> y seleccionarlo parece ser una posible solución:
let table = document.querySelector('#testTable'); let button = document.querySelector('#button'); function selectNode(node) { let range = document.createRange(); range.selectNodeContents(node) let select = window.getSelection() select.removeAllRanges() select.addRange(range) } button.addEventListener('click', function() { selectNode(table); document.execCommand('copy') }) <style> td { border: 1px solid black; } </style> <table> <tbody id='testTable'> <tr> <td>test1</td> <td> </td> <td>test2</td> </tr> <tr> <td>test3</td> <td> </td> <td>test4</td> </tr> </tbody> </table> <br> <button id="button">select</button>