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/
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:El cambio clave aquí es utilizar la función
encodeURIComponent()
alrededor del texto de la clave de licencia antes de establecerlo como el atributohref
. Esto asegura que los caracteres especiales, incluyendo los saltos de línea (\n
), se codifiquen correctamente en la URI. Además, especifiquetext/plain
como el tipo MIME para los datos que se descargan y establezca el parámetrocharset=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.