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.

selección de la función paramétrica func() en la etiqueta según el parámetro de argumento en html

Tengo un archivo index.html que ejecuta un menú




El servidor responde enviando uno de los dos archivos solicitados y una cabecera.
Los dos archivos (satellites.html y simulation.html) son casi iguales, la única diferencia está en la función que se llama al cargarse

<!-- en el satellites.html-->
<body onload='init()'><br>
...

<p>y 
<!-- en el simulation.html-->
<body onload='initSimulation()'><br>
...

De lo contrario, los dos programas HTML son idénticos.

Todo funciona bien, pero quiero evitar repetir el mismo código. ¿Cómo puede el servidor controlar qué función llamará el cliente (probablemente utilizando parámetros de URL)? He buscado, pero parece que la cabecera no está disponible ni en HTML ni en JavaScript.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una solución a este problema es utilizar parámetros URL para controlar qué función llamará el cliente. Esto se puede lograr modificando la etiqueta de ancla en el archivo index.html de la siguiente manera:

    <a href="./satellites.html?init">Satélites</a>
    <a href="./simulation.html?initSimulation">Simulación</a>
    

    En los archivos satellites.html y simulation.html, necesitamos modificar la etiqueta body para leer el parámetro URL y llamar a la función correspondiente:

    <!-- en satellites.html -->
    <body onload='initFunction()'>            
    ...
    
    <!-- en simulation.html -->
    <body onload='initFunction()'>  
    ...
    

    Y en el código JavaScript de ambas páginas, agregamos el siguiente código para obtener el parámetro de la URL y llamar a la función correspondiente:

    function initFunction() {
      var urlParams = new URLSearchParams(window.location.search);
      if (urlParams.has('init')) {
        init();
      } else if (urlParams.has('initSimulation')) {
        initSimulation();
      }
    }
    

    Esto verificará la presencia del parámetro URL “init” o “initSimulation” y llamará a la función correspondiente en base a eso. De esta manera, evitamos duplicar el código en los dos archivos y permitimos que el servidor controle qué función llama el cliente.

Comments are closed.