Foros del Web » Programando para Internet » Javascript »

espacios en blanco, saltos de linea

Estas en el tema de espacios en blanco, saltos de linea en el foro de Javascript en Foros del Web. buenas, tengo el siguiente problema. estoy implementando una funcion en javascript la cual imprime un texto en el html. El problema es que este texto ...
  #1 (permalink)  
Antiguo 27/04/2009, 09:13
 
Fecha de Ingreso: febrero-2009
Mensajes: 225
Antigüedad: 15 años, 10 meses
Puntos: 4
espacios en blanco, saltos de linea

buenas, tengo el siguiente problema. estoy implementando una funcion en javascript la cual imprime un texto en el html.
El problema es que este texto se consigue a partir de PHP (ya que es dinamico) y cuando lo asigno a la variable en Javascript, quedan saltos de linea en el codigo JS y este no compila.

-------
ejemplo de como queda el JS:

var texto = "informacion informacion informacion informacion

informacion informacin"
-------

hay posibilidad de que esto compile sin perder el salto de linea? osea tampoco quiero que se pierda el salto cuando se imprima en la pantalla
  #2 (permalink)  
Antiguo 27/04/2009, 09:22
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Respuesta: espacios en blanco, saltos de linea

Probá así:
Código PHP:
<?php 
function js_encode($s){
    
$texto='';
    
$lon=strlen($s);
    for(
$i=0;$i<$lon;++$i){
        
$num=ord($s[$i]);
        if(
$num<16$texto.='\x0'.dechex($num);
        else 
$texto.='\x'.dechex($num);
    }
    return 
$texto;
}
$texto="informacion informacion informacion informacion

informacion informacin"
;
?>
<script>
var texto = "<?php echo js_encode($texto?>";
alert(texto);
</script>
  #3 (permalink)  
Antiguo 27/04/2009, 09:43
 
Fecha de Ingreso: febrero-2009
Mensajes: 225
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: espacios en blanco, saltos de linea

gracias por el aporte pero la verdad q no entendi nada. No me gusta probar cosas sin saber que estoy haciendo, te pediria si me pudieras explicar que es lo q haces en ese codigo

y creo que la solucion la preciso en JS no en php (por eso postie aqui) ya que el codigo php imprime JS

tengo una cosa asi dentro del JS: <?php echo "var texto =" . get_texto(); ?>


gracias por el interes

Última edición por Newbie001; 27/04/2009 a las 10:26
  #4 (permalink)  
Antiguo 27/04/2009, 10:51
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Respuesta: espacios en blanco, saltos de linea

Lo que hace esa función php es un escape hexadecimal (viendo el código fuente de salida vas a ver más claramente qué hace; también buscando en el manual -php.net- las funciones que no conozcas). Ya que el código lo generás en php, tenés que escapar la salida para que no genere errores cuando las tome el intérprete de javascript, si es que querés mantener los saltos de línea. Lamentablemente, no podés solucionarlo en javascript en este caso. (Eso si comprendí bien cómo generás el código y si interpreté bien tu objetivo)
  #5 (permalink)  
Antiguo 27/04/2009, 14:18
 
Fecha de Ingreso: febrero-2009
Mensajes: 225
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: espacios en blanco, saltos de linea

bueno muchas gracias. Lo estoy probando y al menos me esta dejando compilar, el tema es que los saltos de linea los esta convirtiendo a espacios.

pero bueno, muchisimas gracias
  #6 (permalink)  
Antiguo 27/04/2009, 18:08
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Respuesta: espacios en blanco, saltos de linea

Raro lo que mencionás de los saltos. Si colocaras un ejemplo de cómo querés que te quede quizá podríamos encontrarle alguna vuelta (el tag pre quizá pueda servirte, habría que ver.)
  #7 (permalink)  
Antiguo 27/04/2009, 20:39
 
Fecha de Ingreso: febrero-2009
Mensajes: 225
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: espacios en blanco, saltos de linea

yo supongo que el tema de los saltos culpa de como el plugin de wordpress me devuelve la variable.

No se si servira de algo pero les cuento, instale un plugin llamdo Flutter (o Fresh-page) que permite ingresar campos customizados en la creacion de Posts de wordpress. Uno de estos campos(en realidad son mas de 1) es en donde se guarda el texto del que venimos hablando.
Lo que estoy haciendo es hacer una consulta con PHP para conseguir estas variables, y despues las quiero agregar a un Array en javascript para mostrarl una de ellas cuando suceda un evento determinado. Depende el evento la variable que se muestra. Y lo estoy haciendo con JS para que la pagina no necesite alctualizar.
  #8 (permalink)  
Antiguo 27/04/2009, 23:58
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 5 meses
Puntos: 32
Respuesta: espacios en blanco, saltos de linea

Q tal Panino5001 mira entiendo perfectamente lo que hace toda la funcion pero dices que se pasa a su equivalente hexadecimal para evitar problemas con Js me podrias explicar porque?
  #9 (permalink)  
Antiguo 28/04/2009, 04:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 225
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: espacios en blanco, saltos de linea

Cita:
Iniciado por acoevil Ver Mensaje
Q tal Panino5001 mira entiendo perfectamente lo que hace toda la funcion pero dices que se pasa a su equivalente hexadecimal para evitar problemas con Js me podrias explicar porque?
convierte los digitos de la variable en algo asi:
Código:
theTexts[1] = ("\x31\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66")
entonces si hay saltos de linea o cualquier otra cosa que estuviera molestando la convierte a uno de estos numeros y no deberia haber problema.

luego cuando esto se imprime en la pantalla se transforma a texto
  #10 (permalink)  
Antiguo 28/04/2009, 06:00
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 5 meses
Puntos: 32
Respuesta: espacios en blanco, saltos de linea

Okas gracias =)
  #11 (permalink)  
Antiguo 28/04/2009, 06:00
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Respuesta: espacios en blanco, saltos de linea

Exacto. Escapamos los caracteres para que, entre otra cosas, javascript no encuentre saltos de línea. Hay que evitar los saltos de línea porque, cuando javascript encuentra uno, lo interpreta como final de instrucción y, si estamos trabajando con cadenas, aparece el famoso error de string mal determinado, ya que quedan comillas sin cerrar (según el intérprete) debido al salto de línea.
Esa cadena escapada, si se vuelca mediante un innerHTML, por ejemplo, se mostrará correctamente:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>Documento sin t&iacute;tulo</title>
</
head>

<
body>
<
div id="salida"></div>
<
script>
var 
theTexts=[];
theTexts[1] ="\x31\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66";
document.getElementById('salida').innerHTML=theTexts[1];
//muestra: 1 Informacion Informacion Informacion Informacion Informacion Informacion Informacion Inf
</script>
</body>
</html> 
Es cierto que no te está mostrando los saltos de línea en ese fragmento. Tendrás que ver si la salida php, antes de pasarla a la función, los contiene efectivamente, porque la función sí los muestra cuando existen.
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
<div id="salida"></div>
<script>
<?php
function js_encode($s){
    
$texto='';
    
$lon=strlen($s);
    for(
$i=0;$i<$lon;++$i){
        
$num=ord($s[$i]);
        if(
$num<16$texto.='\x0'.dechex($num);
        else 
$texto.='\x'.dechex($num);
    }
    return 
$texto;

$t="

Informacion
Informacion
Informacion
Informacion
Informacion
"
;

?>
var theTexts=[];
theTexts[1] ="<?php echo js_encode($t?>";
document.getElementById('salida').innerHTML='<pre>'+theTexts[1]+'</pre>';
/*muestra:

Informacion
Informacion
Informacion
Informacion
Informacion

*/
</script>
</body>
</html>
  #12 (permalink)  
Antiguo 28/04/2009, 06:34
 
Fecha de Ingreso: febrero-2009
Mensajes: 225
Antigüedad: 15 años, 10 meses
Puntos: 4
Respuesta: espacios en blanco, saltos de linea

no lo puedo revisar en php en este momento ya que no estoy en casa y caresco de las herramientas. Extrañamente, en IE si genera el salto de linea, mientras en FireFox muestra 2 espacios en blanco en su lugar.

este es el texto verdadero:

\x32\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x 6e\x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e \x20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x 20\x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20 \x49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x 49\x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49 \x6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x 6e\x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e \x66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x 66\x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66 \x6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x 6f\x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f \x72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x 72\x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72 \x6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x 6d\x61\x63\x69\x6f\x6e\x20\x49\x6e\x66\x6f\x72\x6d \x61\x63\x69\x6f\x6e\x20\x20\x0d\x0a\x0d\x0a\x0d\x 0a\x0d\x0a\x0d\x0a\x6c\x61\x6c\x61\x6c\x61\x6c\x61 \x61\x2e\x20\x20\x4a\x4a\x4a\x4a

Por si sirve para algo:
esta es la pagina http://sanchy.com/projekt-buro/?cat=7 y el texto se muestra al elegir la imagen2 y presionar "Descripcion".
Tal vez a alguien se le ocurre otra solucion para lo que estoy haciendo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:54.