Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Leguim en 7 Febrero 2020, 12:43 pm



Título: [Resuelto]: Imprimir una variable de javascript en un title="" de html
Publicado por: Leguim en 7 Febrero 2020, 12:43 pm
Estoy teniendo problemas para hacer esto, es que quiere imprimir una variable de javascript en html... generalmente lo que hago es..

Código
  1. "<script type='text/javascript'>document.write('este es el valor de mi variable');</script>"

pero ya si quiero usarlo en un atributo title=""

no me imprime el valor sino que me imprime la cadena....

¿existe algun truco para hacer esto?


Título: Re: [Pregunta]: Imprimir una variable de javascript en un title="" de html
Publicado por: EdePC en 7 Febrero 2020, 15:50 pm
Saludos,

- Que yo sepa no se puede incrustar sentencias javascript dentro de valores de atributos, aunque quizá existan técnicas de XSS para estos XD.

- Lo que si puedes hacer es imprimir toda la etiqueta, por ejemplo:

-- No funciona:

Código
  1. <p title=<script>document.write('')</script>>Lorem ipsum dolor sit amet</p>

-- Si funciona:

Código
  1. <script>document.write('<p title="hola">')</script>Lorem ipsum dolor sit amet</p>


Título: Re: [Pregunta]: Imprimir una variable de javascript en un title="" de html
Publicado por: Leguim en 7 Febrero 2020, 16:10 pm
mmm

no será que exista algun método parecido a esto? (esto no creo que exista xd es solamente para mostrar un poco la idea)

<script>var variable = 'esto es información';</script>
<p tittle="" script="this.title = variable;"></p>

Los inspire?  :xD :xD

EDIT:

ya casi lo termino, pero quiero que de entrada lo ponga y no cuando se haga un click, pero nose como hacerlo... ya falta poquito.... ¿alguna ayudita?
Código
  1. <script type="text/javascript">var variable = 'mi variable';</script>
  2. <p title="texto" onclick="this.title = variable;"><script type="text/javascript">document.write(variable);</script></p>
  3.  

EDIT 2:

ya está.
Código
  1. <script type="text/javascript">var variable = 'mi variable';</script>
  2. <p title="texto" onmouseover="this.title = variable;"><script type="text/javascript">document.write(variable);</script></p>
  3.  


Título: Re: [Pregunta]: Imprimir una variable de javascript en un title="" de html
Publicado por: WHK en 7 Febrero 2020, 17:00 pm
En jQuery:

Código
  1. <!DOCTYPE html>
  2.    <head>
  3.        <title></title>
  4.        <script>
  5.            $(document).ready(function(){
  6.  
  7.                variable = 'mi variable';
  8.  
  9.                $('#changeme')
  10.                    .mouseover(function(){
  11.                        $(this).attr('title', variable);
  12.                    })
  13.                    .text(variable); // Texto y no HTML, evita XSS
  14.            });
  15.        </script>
  16.    </head>
  17.    <body>
  18.        <p id="changeme" title="texto"></p>
  19.    </body>
  20. </html>

Recuerda que en un buen desarrollo debes separar el tipo de código, por ejemplo el código javascript debería estar en un archivo js separado del html al igual que el css.

Saludos.



Título: Re: [Pregunta]: Imprimir una variable de javascript en un title="" de html
Publicado por: MinusFour en 7 Febrero 2020, 17:08 pm
Yo creo que lo mejor sería que usaras un framework como React, Vue, Angular, etc si vas a querer mezclar JS con HTML syntacticamente.


Título: Re: [Pregunta]: Imprimir una variable de javascript en un title="" de html
Publicado por: Leguim en 7 Febrero 2020, 17:25 pm
En jQuery:

Código
  1. <!DOCTYPE html>
  2.    <head>
  3.        <title></title>
  4.        <script>
  5.            $(document).ready(function(){
  6.  
  7.                variable = 'mi variable';
  8.  
  9.                $('#changeme')
  10.                    .mouseover(function(){
  11.                        $(this).attr('title', variable);
  12.                    })
  13.                    .text(variable); // Texto y no HTML, evita XSS
  14.            });
  15.        </script>
  16.    </head>
  17.    <body>
  18.        <p id="changeme" title="texto"></p>
  19.    </body>
  20. </html>

Recuerda que en un buen desarrollo debes separar el tipo de código, por ejemplo el código javascript debería estar en un archivo js separado del html al igual que el css.

Saludos.



Entiendo, pero como la verdad no quiero trabajar con id="" o class="" para este caso en especifico me sirve más esa manera, muchas gracias a los 3.


Título: Re: [Pregunta]: Imprimir una variable de javascript en un title="" de html
Publicado por: @XSStringManolo en 8 Febrero 2020, 00:47 am
Estoy teniendo problemas para hacer esto, es que quiere imprimir una variable de javascript en html... generalmente lo que hago es..

"<script type='text/javascript'>document.write('este es el valor de mi variable');</script>"

pero ya si quiero usarlo en un atributo title=""

no me imprime el valor sino que me imprime la cadena....

¿existe algun truco para hacer esto?
Si te explicas mejor y exactamente oo que quieres hacer y con que objetivo te digo cual creo que es la solución correcta para cumplir ese objetivo.

Según el standart el script type= no es necesario desde hace muchos años. Hace algún tiempo si era recomendado añadirlo para servidores. Ya no.

Si quieres meter javascript dentro de html sin que se interprete, usa html entities o text nodes junto a createElement y appendChild. Si quieres meter html dentro de javascript es lo mismo. Para seleccionar atributos usa el querySelector que pilla como parámetro los mimos selectores que usas en css.

Como te dice WHK los archivos javascript deben ir separados completamente del html. Es decir usar <button type="button" onlick="MiFuncion()">click</click> es mala práctica. Todo el javascript debe ir externo.

archivo.js
let eventoBotón = getElementsByTagName("button")[0].addEventListener("click", function(){MiFuncion()});

o boton.onclick también es válido.

Deberías añadir CSP en la cabecera de respuesta de tu servidor para evitar que se incluyan archivos externos mediante inyecciones y opcionalmente en el propio documento HTML como meta tag. Lo mismo para el resto de archivos.


Título: Re: [Pregunta]: Imprimir una variable de javascript en un title="" de html
Publicado por: Flamer en 8 Febrero 2020, 17:04 pm
creo que quieres imprimir valores en la etiqueta title creo que seria asi

Código
  1. document.title="valores" + x;
  2.  

bueno pero mejor te pongo un ejemplo para que veas como funciona

Código
  1. <html>
  2. <head>
  3. <title>Tiempo: 0</title>
  4. <body>
  5. <script>
  6. var x;
  7. var s=0;
  8. setTimeout("segundo()",1000);
  9. function segundo()
  10. {
  11.   s++;
  12.   document.title="Tiempo: " + s;
  13.   setTimeout("segundo()",1000);
  14. }
  15. </script>
  16. </body>
  17. </html>
  18.  

dime si es eso