2012-04-01 16 views
5

En mi código que tengo una línea que vuelca la ventana actual (que pasa a ser una página de vídeo de youtube):JavaScript visible en FireBug, inaccesible en el código

Firebug.Console.log(myWindow); 

Se puede observar que la ventana de objeto contiene propiedad "yt", que es otro objeto que pueda ser fácilmente inspeccionada en depurador:

http://i.imgur.com/lHHns.png

Desafortunadamente, llamando

Firebug.Console.log(myWindow.yt); 

registros "indefinidos": ¿por qué es así y cómo puedo acceder a esta propiedad "yt"?

Edit: un addidtion que podría ser importante: el código que estoy escribiendo forma parte de una extensión de Firefox, por lo que realmente no se ejecuta dentro de un pgae, pero en Chrome - estoy empezando a pensar que puede ser el porque. ¿Pueden las secuencias de comandos de Chrome tener alguna limitación en lo que pueden ver/acceso en lugar de código en las etiquetas de script?

+0

Supongo que tiene algo que ver con Firebug, ya que puedo acceder bien desde la consola de Chrome. – Griffin

+0

Solo asegúrate de llamar 'Firebug.Console.log (myWindow.yt);' exactamente en la misma línea que 'Firebug.Console.log (myWindow);'? –

+0

@Griffin: ese no es el caso, también puedo acceder a través de Chrome u otras herramientas de desarrollador, pero sigue siendo invisible para el código que se ejecuta en el navegador; no solo no puedo ingresarlo a Firebug, no puedo llamarlo métodos ni nada. –

Respuesta

2

Por razones de seguridad, las extensiones de Firefox no acceden directamente a los objetos de la página web sino a través de un wrapper. Este contenedor le permite usar todas las propiedades definidas por los objetos DOM, pero cualquier cosa añadida por JavaScript de la página será invisible. Puede access the original object:

Firebug.Console.log(XPCNativeWrapper.wrappedJSObject.yt); 

Sin embargo, si desea interactuar con la página web desde una extensión que debe considerar alternativas donde la página web no puede jugar malas pasadas a usted (por ejemplo, la ejecución de código sin privilegios en la ventana de contenido: myWindow.location.href = "javascript:...") .

0

Las extensiones de Firefox y Chrome no pueden acceder a JavaScript dentro de la página por razones de seguridad.

0

He visto una confusión como esta al usar API asíncronas.

console.log(obj); muestra el contenido de un objeto completo, pero al acceder a las propiedades del objeto en el código, todavía no están realmente pobladas debido a que la llamada es asincrónica.

El motivo por el cual Chrome y Firefox muestran que están completos es probablemente solo un problema de tiempo, ya que probablemente también procesen el console.log() de forma asíncrona.

Cuestiones relacionadas