transparente - ventana javascript
establecer el foco de una ventana emergente cada vez (10)
Tengo dos páginas uno.html y dos.html
Estoy abriendo una nueva ventana usando el siguiente código
//here popup is a global variable
popup=window.open(''two.html'',''two'');
por primera vez, una ventana emergente se abre con éxito y obtiene el foco, pero si intento abrirla de nuevo sin cerrar el popup ya abierto, two.html no se enfocará por segunda vez.
nota: he establecido el nombre de la ventana emergente como ''dos''
Comprueba la configuración de Firefox 2 en
- Ir a Herramientas -> Opciones -> Contenido
- Asegúrese de que "Habilitar JavaScript" esté activado.
- Junto a "Habilitar JavaScript", haga clic en el botón "Avanzado".
- Asegúrese de que haya una marca de verificación en la casilla [x] Subir o bajar ventanas
Si la configuración "Subir o bajar ventanas" está desactivada, esto desactiva el método window.focus ().
Desafortunadamente, algunos navegadores modernos aún no admiten las pestañas de enfoque, vea esta entrada de error de Firefox , por ejemplo.
Sin embargo, el siguiente código está funcionando bien para mí. Como solución alternativa, vuelve a abrir una ventana / pestaña si no se puede enfocar:
var win = window.open("two.html", "two")
win.focus();
setTimeout(function() {
if(document.hasFocus()) {
win.close();
window.open("two.html", "two")
}
}, 1);
En la primera línea abre la ventana y trata de enfocarla usando la segunda línea. Si una ventana con el nombre two
ya está allí, no se abre ninguna nueva ventana / pestaña, pero se reutiliza.
El truco ahora es que verifiquemos si la ventana actual aún tiene el foco utilizando document.hasFocus()
. Si es así, cerramos la ventana y la volvemos a abrir. Esto es solo para los navegadores que no admiten el enfoque de la pestaña que se va a reutilizar directamente. Actualmente, este es el caso de FF e IE / MS Edge. Chrome funciona bien.
Sin embargo, directamente después de usar window.open
, document.hasFocus()
siempre devuelve true (así se dice, también en Chrome). La solución es usar setTimeout
uno ms después.
Encontré una respuesta para mí que funciona. En el html del cuerpo emergente, agregue a la etiqueta del cuerpo onload = "this.window.focus ()". Incluso si minimiza la ventana, vuelve a aparecer por delante y por el centro. Asegúrese de nombrar la ventana en su script de ejecución window.open (''url'', ''algún nombre'', ''vars''); ¡Espero que esto te ayude!
Es una solución de una sola línea, enfóquese en su var de pop-up:
popup=window.open(''two.html'',''two'');
popup.focus();
Esto siempre abrirá la ventana emergente incluso si no está cerrada.
Mi solución empírica que siempre funciona:
setTimeout(''detail.focus()'', 1);
.focus()
justo después de abrir no siempre funciona, ni llamar a .focus()
sin setTimeout.
Sé que es feo (quería deshacerme de él ahora mismo, después de algunos años, sin éxito), y no sé las razones exactas de por qué y cómo, pero funciona.
Puede cerrar la ventana emergente antes de abrirla si comprueba si la ventana emergente ya está abierta cuando llama a la función.
var popup;
function openPop() {
if ("close" in popup) popup.close();
popup = window.open("http://.com", "test", "width=200, height=200");
}
Esto asegurará que la ventana emergente siempre aparezca en la parte superior.
puede lograr utilizando la función de focus
como se usa a continuación
<script language="javascript" type="text/javascript">
<!--
function popitup(url) {
newwindow=window.open(url,''name'',''height=200,width=150'');
if (window.focus) {newwindow.focus()}
if (!newwindow.closed) {newwindow.focus()}
return false;
}
// -->
</script>
var win = window.open(''two.html'',''two'');
win.document.getElementsByTagName("body")[0].focus(); //focus the body rather than the window.
focusedWindow = window.open(''two.html'',''two'').focus();
Agregar directamente el foco () al prototipo de window.open
setTimeout(function () {
window.open(''PageName'', '''', ''height=560,width=1120,resizable=no,left=100,top=50,screenX=100,screenY=50'');
}, 100);
-> Este código se usa para enfocar la ventana recién abierta. -> Póngalo en javascript. (''SetTimeout es una función incorporada de javascript'') -> Muchas veces sucede que cuando se abre la ventana emergente, se colocará detrás de la ventana anterior, por lo que es muy útil enfocar la ventana anterior.