2010-03-05 10 views
10

¿La propiedad window.opener de JavaScript está disponible de manera confiable en todos los navegadores, y es inmune a cualquier configuración de seguridad y limitaciones de cualquier tipo? Tanto el abridor como la ventana abierta estarían en el mismo dominio.¿Es window.opener confiable?

¿Alguien ha tenido problemas o malas experiencias al usarlo bajo ciertas circunstancias?

Lo estoy preguntando porque estoy planeando crear una herramienta que dependa en gran medida de ella y debería admitir tantas plataformas como sea posible.

Respuesta

5

He sido desarrollador en dos sitios ahora que hacen un uso extensivo de window.opener, y no sé de ningún momento cuando me falló. Estas aplicaciones se probaron en IE [678], Firefox y Webkit; Usé informalmente Opera y tampoco noté ningún problema allí.

Ahora, la relación de "abrelatas" es intrínsecamente frágil, porque no hay mucho que pueda hacer para evitar que los usuarios visiten "cnn.com" en la ventana principal del navegador que se utilizó para abrir su ventana emergente. Una vez que la ventana original ha cargado contenido nuevo, la referencia "window.opener" de la ventana "hijo" no le servirá de nada. Del mismo modo, cuando el usuario va y abre una nueva ventana principal del navegador y navega hacia su sitio, sus ventanas "huérfanas" no podrán encontrarlo realmente.

Por supuesto, no puedo ofrecerle un 100% de garantía de que todo estará bien :-) Sin embargo, mi historia es cierta. Quizás mi dependencia de "window.opener" no ha sido tan serio o profundo como lo que estás planeando; Realmente no puedo decir que todo en mis aplicaciones depende de que funcione.

+0

Cheers @Pointy, que coincide con mi experiencia con la propiedad. La conexión es definitivamente frágil, pero no importa en mi caso. Estoy planeando crear un "administrador de medios" para un editor WYSIWYG que ocupe todo el espacio de la pantalla. –

1

He utilizado window.opener en mi aplicación y he encontrado que es agradable trabajar con ella. La única limitación que tiene es si el bloqueador de elementos emergentes se activa por el usuario, entonces la ventana nueva no se abre y ocasiona problemas algunas veces.

Un buen reemplazo para esto (si es un problema el bloqueador de pop-ups) es usar yui panel también JQuery UI es una buena opción.

Aparte de esto, no he encontrado ningún problema como tal y funcionó muy bien en todos los navegadores.

+1

+1 para una ventana emergente en la ventana. Un sitio web debe mantenerse dentro de sus límites (la ventana en la que el usuario pidió que se cargue). Sin embargo, solo mi opinión personal. – Jeremy

+0

@Anil @Jer Normalmente estoy de acuerdo con usted y uso las ventanas emergentes en la ventana, pero este es un caso especial en el que una ventana (o pestaña) externa es absolutamente necesaria. –

+0

@Pekka 웃 Sé que han pasado tres años pero, para que conste, tenga en cuenta que algunas personas (yo incluido) usan extensiones o propiedades del navegador como 'browser.link.open_newwindow = 1', lo que hace que sea completamente imposible para un sitio web abrir una nueva ventana (obligándolos a navegar por la pestaña actual en lugar de abrir una nueva) – ssokolow

5

Vale la pena señalar que window.opener no funciona si el archivo no se carga a través de una conexión HTTP en Chrome (aunque funciona bien en Safari).

+0

+1 ¡muy interesante! ¿Conoces enlaces de referencia para esto? –

+1

No, es una de esas cosas que encontré al trabajar con ella. Desearía que hubiera un recurso para cosas como esas, pero estas rarezas de navegador a navegador parecen estar en gran medida sin documentar. – Heilemann

Cuestiones relacionadas