2011-11-28 24 views

Respuesta

17

Pruebe esto. Supongo que su ID de iFrame es "targetFrame" y el objeto que desea llamar es targetObject y también son del mismo dominio. Si no son mismo dominio Creo que no es posible .:

document.getElementById('targetFrame').contentWindow.targetObject 
+4

Tenga en cuenta que debe tener en el mismo dominio para acceder al objeto 'window' –

4

Si el iframe src no está en el mismo origen/dominio que el padre tendría restricciones

debido a la mismo- origen-política (política de seguridad) https://developer.mozilla.org/en/Same_origin_policy_for_JavaScript

la política está previsto para bloquear el acceso a datos privados, tales como fichas CSRF y otros datos privados almacenados en el marco, por ejemplo, si se construye una página hTML con un iframe de bank.com luego cuando la gente ingresa a su sitio si están registrados en bank.com thei r Los datos privados se almacenarán en el iframe por esa razón same-origin-policy impedirá que diferentes orígenes accedan a los datos de los demás a través de iframes.

2

También puede acceder a los objetos de iframe hijo utilizando el objeto de la ventana principal.

alert(window.frames[0].variable_name); 

Mostrará el valor de variable, variable_name, del primer iFrame. El índice de la lista de marcos se puede usar para acceder a los valores de las variables en todos los cuadros.

+0

ES6/ES2015 child update: esto solo funciona si' variable_name' se ha declarado como 'var variable_name;', no como 'let variable_name ; '. [MDN] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let): "' let', a diferencia de 'var', no crea una propiedad en el objeto global " – cxw

Cuestiones relacionadas