tab opener open new modal ejemplo _blank javascript html

javascript - opener - Abrir enlace en una nueva ventana o enfocarlo si ya está abierto



window.open_blank (5)

Tengo un enlace que debería abrirse en una nueva pestaña, pero si la pestaña ya está abierta, simplemente cambie a ella. He probado con javascript, wnd = window.open () y que wnd.focus (), que funciona en Chrome 19, pero no en FF 13 o IE 9. Aquí está el código que he escrito:

<script type="text/javascript"> var loadingTableWnd; function openOrSwitchToWindow(url){ if(loadingTableWnd == undefined) loadingTableWnd = window.open(url,''myFrame''); else loadingTableWnd.focus(); } </script> <a href=''javascript:openOrSwitchToWindow("/");'' >Loading Table</a>

¿Alguna idea de cómo puedo abrir o cambiar desde cada navegador?

EDITAR : Necesito abrir el enlace en una nueva pestaña, no en una ventana independiente.


Los diferentes navegadores se comportan de manera diferente para window.open () y focus (). Para este código window.open(''www.sample.com'',''mywindow'').focus()

  • Chrome 20 abre una nueva pestaña y se enfoca en las siguientes llamadas abiertas () independientemente de si se llama a focus () o no.
  • Firefox 13 abre una nueva pestaña, se enfoca en la primera apertura (), no se enfoca en las siguientes llamadas de apertura () / ignora el foco ().
  • IE 8 abre una nueva ventana, foco de honores ().
  • Safari 5 abre una nueva ventana y se enfoca en las siguientes llamadas open () independientemente de si se llama a focus () o no.

Fiddle to testing con: http://jsfiddle.net/jaraics/pEG3j/


No deberías necesitar ninguna lógica para algo como esto. De forma predeterminada, al especificar el segundo parámetro para window.open() la ventana tiene un "nombre" que el navegador recuerda. Si intenta llamar a window.open() con el mismo nombre (después de que ya se abrió), no se abre una nueva ventana ... pero es posible que aún deba llamar a .focus() . Prueba esto:

var a = window.open(url, "name"); a.focus();

Esas deberían ser las únicas líneas de código en su función, y no necesita la variable loadingTableWnd ...


Si la ventana ya está abierta y si desea enfocarse en esa ventana puede usar

window.open('''', ''NameOfTheOpenedWindow'').focus();


Si no está interesado en conservar el estado de una pestaña abierta anteriormente, puede hacer esto:

var loadingTableWnd; function openOrSwitchToWindow(url) { if (loadingTableWnd != undefined) { loadingTableWnd.close(); } loadingTableWnd = window.open(url,''myFrame''); }