2011-02-28 27 views
7

Tengo una apertura html completa dentro de un iframe que contiene una función javascript getData(). Ahora no estoy seguro de cómo llamar a getData() desde fuera de ese marco. También es posible llamar desde un archivo javascript externo?llamar a la función javascript desde fuera de un iframe

+0

re. llame desde un archivo externo, vea la actualización [2] en la respuesta a continuación. – johnhunter

Respuesta

10

Puede obtener una referencia al objeto ventana de marco desde la propiedad window.frames. Ver https://developer.mozilla.org/en/DOM/window.frames

ACTUALIZACIÓN:

Se puede acceder al contexto global de un marco flotante llamado con window[framename]. por ejemplo:

<iframe src="data.html" name="data"></iframe> 

<script> 
var myData = window.data.getData(); 
</script> 

Aunque deberá asegurarse de que el iframe se haya cargado.

En jQuery se puede utilizar el método de contenido si desea acceder al DOM iframe:

$("iframe").contents() 

Todo esto es asumiendo que el bastidor alojado dentro de la same domain.

ACTUALIZACIÓN [2]:

Se preguntó si es posible llamar a la función getData desde un archivo externo de JS. La respuesta es sí (si te entiendo correctamente). He aquí un ejemplo:

<html> 
<head> 
    <meta charset="utf-8"> 
    <title>parent page</title> 
</head> 
<body> 

    <iframe src="data.html" name="data"></iframe> 
    <script src="getdata.js"></script> 

</body> 
</html> 

A continuación, en el archivo getdata.js tiene:

var dataFrame = window.data; 

// when the frame has loaded then call getData() 
dataFrame.onload = function() { 
    var myData = dataFrame.getData(); 
    // do something with myData.. 
} 

Esperamos haber respondido a tu pregunta :)

0

en estos casos el nombre de su marco flotante y el cuerpo principal que utiliza/lanza marco y luego usar parent.objectname, en JS todo es objeto y usted debería ser capaz de llamar a getData()

un google rápida llevó a esto ->http://www.esqsoft.com/javascript_examples/iframe_talks_to_parent/

+0

Thnx para su respuesta chicos ... pero mi verdadera preocupación es saber si puedo llamarlo desde un archivo javascript externo. –

+0

Sí, puede hacer que su marco cargue un archivo js externo que defina sus funciones. Querrá asegurarse de que el marco haya cargado el script externo antes de llamar a 'getData' desde la página principal. – johnhunter

0

En cierta situación que podría haber un neccessity de llamar a un javascript función dentro de un iframe del documento principal, y viceversa, es decir; llamando a una función javascript en el documento principal desde el iframe.

Por ejemplo; el documento principal tiene un iframe con el atributo id 'iFrameId', y la función 'functionInIframe()' se define en ese documento iframe. El siguiente código puede llamar a esa función de iframe desde el documento principal.

document.getElementById('iFrameId').contentWindow.functionInIframe(); 

Y el siguiente código puede llamar a la función definida en el documento principal (functionInParent()) desde el propio iframe.

parent.functionInParent(); 

De esta manera, javascript puede interactuar entre el documento principal y el iframe.

Este es el original post.

Cuestiones relacionadas