ejemplo - Obteniendo elemento dentro de Frame usando jQuery




jquery set value input (4)

¿Has probado $('#findthis', $('#SettingsGrid')) ?

El segundo argumento dentro del jquery externo es el contexto en el cual se realiza la búsqueda referida por el primer argumento. Cuando no se da un segundo argumento, entonces es por defecto la raíz.

Estoy tratando de acceder a un elemento que está dentro de un marco, pero no he tenido la suerte de obtenerlo hasta ahora. He leído muchos ejemplos aquí en stackoverflow y en la documentación de jQuery, pero todos los ejemplos que he visto han sido en referencia a iFrames que se comportan de manera diferente a los marcos tradicionales. La estructura de mi página es la que se muestra a continuación con el contenido real eliminado:

<html>
<head></head>
<frameset>
<frame name="Menu"><html><body>
    <!--Menu contents-->
</body></html></frame>

<frameset>
<frame name="SettingsTree"><html><body>
    <!--Setting options-->
</body></html></frame>
<frame name="SettingsGrid" id="SettingsGrid"><html><body>
    <div id="findthis"></div>
    <!--Setting grid values-->
</body></html></frame>
</frameset>

</frameset>
</html>

La forma de obtener contenidos de "findthis" dentro de un iFrame sería

$('#SettingsGrid').contents().find('#findthis')

Sin embargo esto no devuelve nada. El objeto $ ('# # SettingsGrid') existe con una longitud de 1 y todo el html que esperaría que tuviera. Sin embargo, cuando llamo a .contents () en ese objeto, no devuelve nada. No sé si esto se debe a que no se ha cargado correctamente en el DOM o si hay algún otro problema.


Esto funcionó para mí, si el marco tiene un nombre y una identificación:

$('#frame_id',top.frames["frame_name"].document) ...

Para mí, una buena forma de hacer esto fue encontrar un cuadro por clase y usar el método prop () de jquery y la ventana de contenido. Desafortunadamente, en este marco se debe declarar mediante alguna función que realice una tarea, por ejemplo, el método findAndsubmitForms ().

ventana principal:

$('.frameClass or #id or so').prop('contentWindow').findAndSubmitForms();

ventana secundaria (marco):

function findAndSubmitForms(){
    $('form').submit();
    }

Si esto no es posible declarar dicho método dentro del marco, por supuesto podría hacerse definiéndolo así:

$('.frameClass').prop('contentWindow').findAndSubmitForms=function(){...};

y que llamar a nuestra función deseada: d

Que tengas un buen día y te deseamos un buen momento mirando la pantalla: D






frame