2012-02-28 19 views
5

El video HTML5 de YouTube dispara un mensaje console.log para varios eventos como la carga de un banner publicitario. Estoy tratando de captar el mensaje mediante programación console.log utilizando JavaScript para activar una función de la siguiente manera:Intentando capturar console.log Mensaje de YouTube <iframe>

console['log'] = function(msg){ 
    // Operate on msg 
} 

Para enviar un mensaje a la console.log YouTube , el siguiente método funciona (en la escritura a mano para referencia ilustrativa):

document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console.log(msg); 

sin embargo, el código siguiente no funciona:

document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console['log'] = function(msg){ 
    // Operate on msg from YouTube <iframe> 
} 

I también lo han intentado:

window.console = document.getElementsByTagName('iframe')[youTubeIframe].contentWindow.console; 
console['log'] = function(msg){ 
    // Operate on msg 
} 

Lo que no entiendo es; si puedo invocar un mensaje de console.log a YouTube , ¿cómo puedo capturar el mensaje de registro de la consola? ¿Cuál es la forma correcta de hacer esto, si existe tal forma?

+0

Sospecho que la seguridad del navegador no le permite acceder a la consola desde otro dominio. – jessehouwing

+0

@jessehouwing Veo lo que dices, pero ¿no tendría más sentido bloquear los mensajes de registro de la consola PARA el iframe de otro dominio? – lincolnberryiii

+1

Leerlos es más esencial. Digamos que un javascript registra un número de tarjeta de crédito en el registro, no querría que otro dominio los lea. Si escribes, ¿qué daño puedes hacer? :). – jessehouwing

Respuesta

3

En los navegadores de la última versión, no puede acceder a ningún elemento dentro de un iFrame desde un dominio diferente que la página que contiene el iframe, es decir, Chrome v31, Firefox v26, IE11.

Funcionó en las versiones anteriores de algunos navegadores en particular, pero esto no funcionará en todos los navegadores.


navegadores actuales que cumplen con W3C HTML5 embedded content (including iframes) specification no sólo cumplir la política del mismo origen, sino también acepta un nuevo atributo sandbox para especificar aún más restricciones a un iframe.

Se puede ver los navegadores que soportan el nuevo estándar en esta página: http://html5test.com/compare/feature/security-sandbox.html

Los navegadores que acepten el nuevo atributo también debe cumplir con la política del mismo origen W3C, y por lo tanto no se le permitirá acceder a la console objeto (o cualquier otro objeto dentro del iframe).