w3schools inside contents javascript jquery frames

inside - javascript find iframe



JQuery y frames-$(document).ready no funciona (12)

¿Has intentado poner el código jQuery dentro de la página Info.aspx?

Tengo una página, con algún código en js y jQuery, y funciona muy bien. Pero desafortunadamente, todo mi sitio es muy antiguo y usa marcos. Así que cuando cargué mi página dentro de un marco, $(document).ready() no se dispara.

Mi conjunto de marcos se ve así:

<frameset rows="79,*" frameBorder="1" frameSpacing="1" bordercolor="#5996BF" noresize> <frame name="header" src="Operations.aspx?main=''Info.aspx''" marginwidth="0" marginheight="0" scrolling="no" noresize frameborder="0"> <frame name="main" src="Info.aspx" marginwidth="0" marginheight="0" scrolling="auto" noresize frameborder="0"> </frameset>

Mi página está cargada en el marco main . ¿Que debería hacer?


No estoy seguro de lo que está tratando de hacer, pero tengo una aplicación asp aún más antigua que funciona sin marcos, y recientemente agregué la funcionalidad de jQuery y está funcionando muy bien. El $ (document) .ready () funciona bien dentro de un marco, pero si desea hacer referencia al DOM en otro marco, tendrá que usar el evento onload de Frame para que sepa cuándo se carga el DOM del marco. Es cierto que utilicé iFrames, pero el concepto debería ser el mismo.



No hay ninguna razón para que $(document).ready() no se llame. Asegúrese de que su página contenga un include para jquery.js . Intenta hacer una prueba simple con una página HTML vacía y solo una alerta para ver si hay otro problema.

Si está intentando usar esto dentro de la página HTML que contiene la definición del marco, tenga en cuenta que no hay ningún documento allí, tendrá que usar el


No sé si es la mejor solución, pero cuando elimino $(document).ready() y mantengo su cuerpo, todo funciona perfectamente.


Si desea onload evento de onload para sus marcos, siga estos pasos:

  1. Asigne una id y un name a cada etiqueta <frame> . Asegúrese de que tanto el valor de id como el de los atributos de name sea ​​el mismo.

  2. Use el siguiente código para onload evento de onload del marco:

    $("frameName").ready(function() { // Write your frame onload code here }


Lo siguiente también funcionó para mí:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script> <script> $(window.parent.frames[0].document).ready(function() { // Do stuff }); </script>

El [0] indica que es el primer fotograma en el documento, [1] sería el segundo fotograma, y ​​así sucesivamente. Esto es particularmente bueno si no tiene control sobre el marcado, y todavía está utilizando el documento listo.


He trabajado mucho tiempo con esta publicación ... esta es mi solución.

test.html

<!DOCTYPE HTML> <html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <script> document.write(''<frameset><frame name="frame_content" id="frame_content"></frame></frameset>''); $(''#frame_content'').attr(''src'', ''test2.html''); $(''#frame_content'').load(function() { if(''${"#header"}'' != '''') { $("#header", frame_content.document).remove(); } }); if($(''#frame_content'').complete) $(''#frame_content'').trigger("load"); </script> </head> </html>

test2.html

<!DOCTYPE HTML> <html> <head> </head> <body> <div id="header">You will never see me, cause I have been removed!</div> </body> </html>


Sé que este es un tema viejo. Pero para ayudar a algunos de ustedes que llegan a esta página, esta es mi solución:

$($("#frameName")[0].contentWindow.document).ready(function() { // Write you frame onready code here });


He intentado el método mencionado en otro comentario:

$("#frameName").ready(function() { // Write you frame on load javascript code here } );

y no funcionó para mí.

esto hizo:

$("#frameName").load( function() { //code goes here } );

Aunque el evento no se dispara tan rápido, espera hasta que las imágenes y css también se hayan cargado.


No es necesario modificar el marcado. Solo arregla el selector. Debería ser:

$("frame[name=''main'']").ready(function(){..});

no

$("#frameName").ready(function(){..});

Nota: parece que el evento jQuery ready se dispara varias veces. Asegúrate de que esté bien con tu lógica.


Esta respuesta puede ser tarde, pero esta respuesta puede ayudar a alguien como yo ...

Esto se puede hacer a través de un código Javascript nativo

ifrm2 = var ifrm2 = document.getElementById(''frm2''); if (ifrm2.contentDocument.readyState == ''complete'') { //here goes the code after frame fully loaded } //id = frm2 is the id of iframe in my page