javascript window.opener

javascript - alternativas de window.opener



(5)

Estoy abriendo una ventana emergente modal. Luego accedo a un cuadro de texto de la ventana principal y otros atributos usando window.opener . Está funcionando bien en Firefox pero no en IE8. Da error ''window.opener es nulo'' . ¿Cómo puedo acceder a los atributos de la ventana principal en la ventana secundaria que funciona en ambos navegadores?


Como alternativa de navegador cruzado, puede asignar un atributo personalizado a la nueva ventana mientras la abre:

var popup = window.open(...); popup.isPopup = true;

Luego, en la página referida:

if (window.isPopup) { // Do something } else { // Not in a popup }


Desactive el "Modo protegido" de Internet Explorer, que impide el acceso a este objeto.

Los pasos para esto son:

  1. Presiona Alt + T para mostrar el menú Herramientas
  2. Haga clic en "Opciones de Internet"
  3. Seleccione la pestaña "Seguridad"
  4. Asegúrese de que la zona seleccionada contenga su sitio. Para un sitio de intranet, normalmente sería la zona "Intranet local".
  5. Desmarque "Habilitar modo protegido"
  6. Cierre todas las pestañas y ventanas de IE y vuelva a abrir.

Ahora debería poder acceder al objeto window.opener.


El enfoque que tomaría es el siguiente:

  1. Use una biblioteca de IU de JavaScript existente porque no es la primera persona que desea hacer esto, fallando eso
  2. Cree una función llamada OpenWindow , que el navegador olfatee para el método window.opener

Por ejemplo:

if(window.opener == undefined) { //probably not Firefox... }

y si lo encuentra, entonces lo usa, de lo contrario, prueba la variante de IE y la usa. Y luego comprueba la versión de Safari, etc ...


Hay dos formas de resolver el problema: Nota: " window.opener " no es compatible con IE si se usa " showModalDialog ".

1) En lugar de " window.showModalDialog " use " window.open "

2) Si desea utilizar " window.showModalDialog ", haga lo siguiente:

<script language="javascript" type="text/javascript"> function YourFunction() { var opener = null; if (window.dialogArguments) // Internet Explorer supports window.dialogArguments { opener = window.dialogArguments; } else // Firefox, Safari, Google Chrome and Opera supports window.opener { if (window.opener) { opener = window.opener; } } // write you code and refer "opener" window.close(); } </script>


Puede pasar argumentos a la función showModalDialog. Simplemente pase el objeto de la ventana como un argumento.

window.showModalDialog(theURL, window);

Puedes acceder a los argumentos desde la ventana modal usando dialogArguments. Consulte: http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx

var openerWindow = window.dialogArguments;