2012-09-07 18 views
6

Quiero que mi aplicación web se ejecute en una ventana que no tiene barra de menús, barra de direcciones, etc. Tengo una página Default.html y en esta página hago clic en el botón "Ejecutar aplicación" que por primera vez se abre mi aplicación en otra ventana usando window.open y luego se cierra la ventana actual abriendo "AutoClose.html" usando window.open con _self parámetroCerrar ventanas que no fueron abiertas por script usando javascript

Default.html

<html> 
<head> 
<script type="text/javascript"> 
    function runApp() { 
     // Open my application 
     window.open('Application.html', null, 'status:no;dialogHide:true;help:no;scroll:yes;center=yes;'); 

     // Close this window 
     window.open('AutoClose.html', '_self'); 
    } 
</script> 
</head> 
<body> 
    <input type="button" value="Run Application" onclick="runApp();" /> 
</body> 
</html> 

AutoClose.html

<html> 
<head> 
<script type="text/javascript"> 
    window.close(); 
</script> 
</head> 
<body></body> 
</html> 

Mi aplicación debería ser compatible con IE, Firefox y Chrome y mi código funciona bien en IE y Chrome pero no puede cerrar la primera ventana en Firefox porque "Scripts no pueden cerrar ventanas que no fueron abiertas por script". . En Firefox, se abre la llamada AutoClose.html pero window.close() en esta página, solo provoca que la advertencia "Los scripts no pueden cerrar Windows que no se abrieron mediante el script" y la ventana no se cierre. Por cierto, la ventana de mi aplicación se abre sin ningún problema (no hay problema al respecto).

Parece que usar window.open() con _self truco de parámetro no funciona para Firefox. Ya que mi objetivo es ejecutar la aplicación en una ventana sin barra de menú, etc. addressbar

  1. ¿Hay alguna manera para ocultar addressbar, sin usar la barra de menú window.open() (al menos para Firefox)? Entonces no necesitaré ejecutar window.close()
  2. ¿Hay algún ajuste para suprimir la advertencia "Los scripts no pueden cerrar ventanas que no se abrieron mediante el script" en Firefox? Un "Permitir secuencias de comandos para cerrar ventanas que no fueron abiertos por la escritura" ajuste sería genial (:
  3. ¿Hay alguna manera de hacer window.close() trabajo para "ventanas que no fueron abiertos por script utilizando javascript" en Firefox
  4. O? , ¿hay alguna otra sugerencia (:

Gracias de antemano

ACTUALIZACIÓN:. se trata de una aplicación de banca y yo soy sólo una no desarrollador de la toma de decisiones en otras palabras, una especie de analista quiere la aplicación. trabajar de esta manera. Y no lo estoy cuestionando. Entonces, "todo lo que estás tratando de hacer es completamente inútil". g "las respuestas no serán realmente útiles.

+1

Afaik usted es SOL - pero también tengo dificultades para ver cualquier necesidad de esto. Si alguna vez lo logra, nunca más volveré a visitar su sitio personal de DOS, – mplungjan

+2

, no haga el "ejecutar en una ventana que no tiene barra de menú, barra de direcciones". Esto es tan molesto como el infierno. Esos bares son útiles y apenas veo una buena razón para privar a sus usuarios de sus funcionalidades. – BiAiB

Respuesta

6

No puede cerrar la ventana actual en firefox porque no la abrió. No importa que hayas cargado AutoClose.html en él.

Pero todo este asunto con windows no tiene sentido. La mayoría de las personas tiene su navegador configurado para abrir ventanas nuevas en una nueva pestaña, y no puede evitar la barra de menús, etc. en una ventana de pestañas.

Yo, personalmente, estaría muy irritado si cerrara mi ventana solo porque usé su aplicación.

Podría ser la única ventana abierta por el usuario, en cuyo caso cerró su navegador. Puede ser que quieran presionar hacia atrás, y cerrar la pestaña los molestará.

Este error de firefox es correcto, y si funciona en Chrome, es un error grave y debe informarlo.

+0

Como mencioné anteriormente, mi objetivo es "ejecutar la aplicación en una ventana sin barra de menú, barra de direcciones, etc." no cerrando la ventana –

+0

Entonces solo abre una nueva ventana y deja solo la ventana actual. ¿Cuál es el problema? – Ariel

+0

Beacuse la página actual es la página de inicio de sesión. Y la gente estaría muy irritada si se queda allí después de iniciar sesión. –

1

El problema básico es que lo que su requisitos sets que quiere hacer es bloqueado de forma explícita por Firefox:

  1. No hay manera de ocultar la interfaz de usuario en la ventana del navegador existente de un usuario, porque es fácil de hostil y una herramienta favorita de phishers.
  2. No hay forma de cerrar la ventana existente del usuario de la secuencia de comandos, perdiendo todo el historial de la sesión del usuario en el proceso.

Básicamente, el usuario tiene otras cosas en el navegador además de las de su banco. Entonces asumir que de lo contrario está más o menos condenado al fracaso.

¿Hay alguna manera de evitar los requisitos irrazonables?

+0

Sería mejor si los navegadores permiten una mayor personalización en los niveles de confianza. Me gustaría que los usuarios pudieran decir al navegador algo así como: "Confío en este sitio web para que pueda hacer lo que quiera con javascript" –

+0

Excepto por supuesto que ningún usuario en serio debería confiar en un sitio web bancario típico ... En particular, si el usuario confiaba en el sitio descrito anteriormente, ¡el sitio luego procedería a abusar de esa confianza al destruir el historial de la sesión del usuario! –

+0

Dado que se trata de una aplicación web de intranet utilizada por los empleados del banco, considerar este tipo de escenarios parece tan paranoico. –

5

Simplemente,

open(location, '_self').close(); 
+0

Stonking. Gran solución –

+7

Esto no cierra la ventana, simplemente borra el contenido de la página. – Zerubbabel

0

Esto funcionó para mí.

Lo usé para cerrar la ventana al hacer clic en un botón en el cuadro de diálogo de jQuery UI.

open(location, '_self').close(); 
Cuestiones relacionadas