2010-07-08 14 views
12

Estoy usando Mozilla Firefox y estoy tratando de encontrar una manera de acceder al contenido de otras pestañas en la misma ventana usando JavaScript y DOM (estoy abierto a otras técnicas si existen) .Accediendo al contenido de otras pestañas en el navegador

E.g. Quiero ejecutar un JavaScript en tab1 que puede encontrar el título de alguna otra pestaña. Básicamente lo necesito para poder identificar una pestaña que se ha abierto debido a href en mi página actual sin usar el método window.open. Todo lo que quiero es un hipervínculo simple que abre una página que pertenece al mismo dominio que la página actual (la página debe abrirse en una nueva pestaña). Ahora quiero poder acceder a esta nueva pestaña desde la pestaña actual.

Respuesta

10

Puede usar HTML5 cross-window messaging ... pero eso es un poco de vanguardia.

Incluso en ese caso, es probable que necesite secuestrar el evento de etiqueta "hacer clic" con javascript y abrir la ventana usted mismo para que tenga acceso al nuevo objeto de ventana para publicar mensajes.

+2

Parece que hemos avanzado mucho en los últimos seis años :) http://caniuse.com/#feat=x-doc-messaging – Loupax

13

Si bien puede abrir fácilmente una nueva ventana con javascript, estoy seguro de que eso es todo. Desde el punto de vista de la seguridad, no quiere que Javascript en una pestaña pueda consultar/acceder al DOM en otra pestaña. Cualquier sitio podría obtener acceso a los detalles de su cuenta bancaria, etc. si ambos sitios se abren en pestañas separadas.

+6

sí ... Lo sé. Pero, como mencioné anteriormente, la nueva pestaña/ventana pertenecerá al mismo dominio, por lo que posiblemente no "robe" los detalles de la cuenta bancaria de mi propio sitio web. De todos modos, gracias por su pronta respuesta chicos ... pero es necesario encontrar una solución para esto. - Gracias de nuevo – vamyip

+0

¿Se puede crear un efecto similar al rastrear las pestañas abiertas del servidor? P.ej. supongamos que ha codificado de forma intencionada ciertos enlaces para abrir en una nueva pestaña, entonces sabe que el usuario tiene dos pestañas abiertas. Además, si tiene el lado del cliente js (ajax) "revisando" cada pocos segundos desde ambas pestañas, la comunicación entre pestañas podría transmitirse a través del servidor. P.ej. quizás la pestaña 1 está editando el objeto "Zoo" y cambia su nombre de "Boston" a "Denver". La pestaña 2 es "Boston Zoo Animals" donde puedes cambiar los animales en el zoológico. La pestaña 2 se actualiza a "Denver Zoo Animals" con la actualización de ajax. –

7

Puede acceder a la nueva ventana/pestaña si se abrió con JavaScript y la página está en realidad en el mismo dominio.

Puede abrir la ventana/pestaña igual que

var win = window.open("/path_to_page"); 

A continuación, tendrá que esperar a que la página se cargue antes de poder acceder, por ejemplo, el título.

win.onload = function(){ alert(win.document.title); }; 
+1

Solo asegúrese de que ambas páginas tengan el mismo origen u obtendrá el siguiente error: 'Bloqueado un marco con origen" http: // x "de acceder a un marco con origen" http: // y ". Los protocolos, dominios y puertos deben coincidir. – supercoco

8

Vamyip,

intente configurar una cookie que se puede acceder a cualquier página en el mismo dominio. En otras páginas, use un temporizador de JavaScript para verificar si el valor de la cookie ha cambiado y, cuando lo tenga, puede usar su valor y realizar una acción.

Me funcionó.

Cuestiones relacionadas