> Faqs > Llamadas a funciones de un Frame a otro.

Llamadas a funciones de un Frame a otro.

Saludos, necesito realizar el llamado de un JS de un Frame a otro para que en ese otro se abra una ventana modal, help me!

Un archivo inicial con Frameset contiene dos FRAME y cada archivo se muestra como parte de cada uno de los FRAME's separadamente.

Este es el código que trato de usar:

PRIMER ARCHIVO:

<!doctype html>
<body>
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <div>
    <script type="text/javascript">
      var dialogo;
      $(function () { dialogo = $("#dialogo-forma").dialog({ autoOpen: false, modal: true, }); });
    </script>
        <form id="dialogo-forma">
          <label id="etiquetaNombre">Nombre</label>
          <input type="text" id="name" />
        </form>
        <input type="button" value="Popup" id="button-mail" onclick='javascript: dialogo.dialog("open")' />
  </div>
</body>
</html>

SEGUNDO ARCHIVO:

<!doctype html>
<body>
  <div>
        <input type="button" value="Popup" id="button-mail" onclick='javascript: dialogo.dialog("open")' />
  </div>
</body>
</html>

Respuestas

Primero que nada, el trabajo desde un frame a otro es algo que Javascript le ha ido poniendo trabas con el tiempo. sobre todo porque puede dar problemas de seguridad. En todo caso, cualquier práctica que hagas de llamadas entre frames deberías asegurarte que las dos páginas están en el mismo dominio, porque si no es así entonces nunca vas a conseguir que funcione.

Ahora te pregunto ¿Te has mirado el manual de control de frames en Javascript? Este manual te explica cómo realizar distintas prácticas como las que necesitas.

Básicamente tendrás que irte moviendo por el DOM para acceder a otros frames.

La sintaxis sería algo como

window.parent.frames[0]

window.parent te da la declaración de frames y luego en frames[0] consigues acceder al primer frame declarado. Dependiendo de cuál es es el frame al que acceder será un índice u otro. Más información en el mencionado manual.

Además te comento que en HTML5 las etiquetas <frameset> han sido declaradas obsoletas, por lo que también tendrías que ver si todo esto te sigue funcionando.

Miguel Angel
3295 146 215 17