es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Perdida de saltos de línea en text() de JQuery en FireFox.

Tengo un DIV en la página que quiero que el usuario pueda descargar como un archivo de texto (este es un código de licencia). Este DIV tiene símbolos \n que se muestran correctamente utilizando white-space: pre;. Utilizo el siguiente código para crear un enlace temporal <a> con el contenido del DIV y descargarlo. Esto funciona bien en Chrome, pero FireFox pierde los símbolos de salto de línea y obtengo un texto de una sola línea.

downloadLicenseBtn = $("#download_license");
downloadLicenseBtn.click(function(e){
    e.preventDefault();
    var $temp = $("<a>");
    $(body).append($temp);
    $temp.attr({
        download: 'license.txt',
        href: "data:text/html," + $('.edd_sl_license_key').text() 
        })[0].click()
    $temp.remove();
});

Intenté usar la función html() de JQuery en lugar de text(), intenté configurar data:text/plain;charset=utf-8. Sin suerte. 🙁

JSFiddle aquí: https://jsfiddle.net/movs21/vy4ukdpr/

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Solución para descargar clave de licencia con saltos de línea en Firefox usando JavaScript y jQuery

    Para asegurarse de que se conserven los saltos de línea al descargar una clave de licencia como un archivo de texto desde un contenedor div utilizando JavaScript y jQuery, realice los siguientes cambios en el código:

    downloadLicenseBtn = $("#download_license");
    
    downloadLicenseBtn.click(function(e){
    
        e.preventDefault();
    
        var $temp = $("<a>");
    
        $('body').append($temp);
    
        $temp.attr({
            download: 'license.txt',
            href: 'data:text/plain;charset=utf-8,' + encodeURIComponent($('.edd_sl_license_key').text())
        })[0].click();
    
        $temp.remove();
    });
    

    El cambio clave aquí es utilizar la función encodeURIComponent() alrededor del texto de la clave de licencia antes de establecerlo como el atributo href. Esto asegura que los caracteres especiales, incluyendo los saltos de línea (\n), se codifiquen correctamente en la URI. Además, especifique text/plain como el tipo MIME para los datos que se descargan y establezca el parámetro charset=utf-8 para indicar la codificación de caracteres que se utiliza.

    Esto debería preservar los saltos de línea y permitir la descarga exitosa de la clave de licencia como un archivo de texto con saltos de línea en Firefox.

Comments are closed.