una servicios puedo producto prestados por ley form dinero devolucion consumidor compra arrepentir javascript asynchronous callback window.open

javascript - servicios - ley consumidor devolucion dinero



javascript window.open de devoluciĆ³n de llamada (2)

Nos encontramos con este mismo problema y buscamos una respuesta en torno a SO. Lo que encontramos funciona en nuestras circunstancias y la sabiduría destilada es la siguiente:

El problema está relacionado con los bloqueadores de ventanas emergentes del navegador que impiden la apertura de la ventana programática. Los navegadores permiten que la ventana se abra a partir de los clics reales del usuario que ocurren en el hilo principal. De manera similar, si llama a window.open en el hilo principal, funcionará, como se indicó anteriormente. De acuerdo con esta respuesta en Abrir una URL en una nueva pestaña (y no en una nueva ventana) usando JavaScript si está utilizando una llamada Ajax y desea abrir la ventana en caso de éxito, debe establecer async: false que funciona porque eso mantendrá todo en el hilo principal.

No pudimos controlar nuestra llamada Ajax así, pero encontramos otra solución que funciona por las mismas razones. Advertencia, es un poco hacky y puede no ser apropiado para usted dadas sus limitaciones. Cortesía de un comentario sobre una respuesta diferente en Abrir una URL en una nueva pestaña (y no en una nueva ventana) usando JavaScript abre la ventana antes de llamar a setTimeout y luego actualizarlo en la función demorada. Hay un par de formas de hacer esto. O bien, mantenga una referencia a la ventana cuando la abra, w = window.open... y establezca w.location o ábrase con un objetivo, window.open('''', ''target_name'') , en la función de retraso abierta en ese target, window.open(''your-url'', ''target_name'') , y confíe en que el navegador guarde la referencia.

Por supuesto, si el usuario tiene su configuración para abrir enlaces en una nueva ventana, esto no va a cambiar eso, pero eso no fue un problema para el OP.

window.open() llamado desde el hilo principal abre una nueva pestaña por defecto.

Pero, aquí abre una nueva ventana cada vez (Opera 16 y Google Chrome 29)

<input type="button" value="Open" onclick="cb1()"> <script type="text/javascript"> function cb1() { setTimeout(wo, 1000); //simple async } function wo() { var a = window.open("http://google.com", "w2"); a.focus(); } </script>

(lol, esta es mi respuesta para Abrir una URL en una nueva pestaña (y no en una nueva ventana) usando JavaScript ).

¿Cómo puedo abrir en la pestaña (por defecto del navegador) aquí?


Si se abre una nueva ventana como una nueva pestaña, o una nueva instancia, depende de la configuración del usuario.