Estoy abriendo una ventana emergente modal. Luego accedo a un cuadro de texto de la ventana principal y a 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 ventana principal en la ventana secundaria que funciona en ambos navegadores?window.opener alternatives
Respuesta
Puede pasar argumentos a la función showModalDialog. Simplemente pase el objeto ventana como argumento.
window.showModalDialog(theURL, window);
Yo puedo acceder a los argumentos desde la ventana modal usando dialogArguments. Ver: http://msdn.microsoft.com/en-us/library/ms533723%28VS.85%29.aspx
var openerWindow = window.dialogArguments;
Probablemente debería tener en cuenta que esto funciona en IE y FF y probablemente también en otros navegadores. – Kaitnieks
showModalDialog está en desuso por cromo 35 (julio de 2014). Ver http://blog.chromium.org/2014/07/disabling-showmodaldialog.html y http://blog.chromium.org/2014/04/chrome-35-beta-more-developer-control.html – edigu
El enfoque me gustaría tener es la siguiente:
- utilizar una biblioteca JavaScript interfaz de usuario existente, ya que no es la primera persona que quiere nunca para hacer esto, en su defecto
- crear una función llamada
OpenWindow
, que olfatea navegador para elwindow.opener
método
por ejemplo:
if(window.opener == undefined) {
//probably not Firefox...
}
y si lo encuentra, lo usa, de lo contrario, prueba la variante de IE y lo usa. Y entonces se comprueba la versión de Safari, etc ...
Hay dos maneras de resolver el problema: Nota: "window.opener" no está soportado por el IE si se ha utilizado "showModalDialog".
1) En lugar de "window.showModalDialog" uso "window.open"
2) Si desea utilizar "window.showModalDialog" y luego 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>
Deshabilite el "Modo protegido" de Internet Explorer, que impide el acceso a este objeto.
Los pasos para ello son:
- Pulse Alt + T para abrir el menú Herramientas
- Haga clic en "Opciones de Internet"
- Seleccione la pestaña "Seguridad"
- Asegúrese zona seleccionada contiene Tú sitio. Para un sitio de intranet, normalmente sería la zona "Intranet local".
- Desmarque "Habilitar modo protegido"
- Cierre todas las pestañas y ventanas de IE y vuelva a abrir.
Ahora debería poder acceder al objeto window.opener.
Como una alternativa entre navegadores, se puede dar un atributo personalizado a la nueva ventana mientras se está abriendo es:
var popup = window.open(...);
popup.isPopup = true;
Luego, en la página enlazada:
if (window.isPopup) {
// Do something
}
else {
// Not in a popup
}
- 1. java.util.Vector - alternatives
- 2. SVG alternatives?
- 3. webistrano alternatives?
- 4. Pickle alternatives
- 5. ¿Es window.opener confiable?
- 6. window.opener nulo después de redirigir?
- 7. JavaScript window.opener llamada principal función
- 8. Cuándo utilizar window.opener/window.parent/window.top
- 9. MPMoviePlayerController alternatives on iPhone?
- 10. ASP.NET MVC alternatives?
- 11. MathJax/jsMath alternatives?
- 12. MySQL Query Browser alternatives
- 13. SQLite Alternatives for C++
- 14. Hibernate Union alternatives
- 15. python logging alternatives
- 16. JS validator alternatives to JSLint?
- 17. ¿Cómo obtener acceso desde ventanas emergentes entre sitios a window.opener?
- 18. EditText Alternatives en un widget? Tiene que haber una forma
- 19. Cómo usar el comando update-alternatives --config java
- 20. JS: "El destinatario (servidor [aplicación no servidor]) no está disponible y desapareció". accediendo a window.opener
- 21. ¿Qué sistema de pago tiene una buena integración con Java?
- 22. Manipulación de cadenas en la concha de pescado
- 23. Reflector ya no será gratuito. Alguna alternativa?
- 24. patrón de expresión para obtener el ID de vídeo de YouTube desde cualquier URL de YouTube
- 25. Prueba unitaria XML: alternativas XmlUnit para .NET?
- 26. Problema con window.close y cromo
- 27. .NET como reflector
- 28. ¿Hay editores alternativos para archivos .m?
- 29. Usando Homebrew con GCC alternativo
- 30. Actualice la ventana principal desde la ventana secundaria en javascript
Ha intentado window.parent.opener? –
lo intento window.parent.opener pero no puedo acceder al objeto del documento padre. Paso parent.document como argumento y acceso a parent.document en popup como window.dialogArguments.parentDocumentObj donde parentDocumentObj es el nombre de la variable que contiene el documento. – dmay