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'');
}
window.focus()
es ampliamente compatible: http://www.w3schools.com/jsref/met_win_focus.asp y parece funcionar bien tanto en Internet Explorer como en Firefox, el problema debería estar en su código. He creado un jsFiddle simple para que lo pruebes - http://jsfiddle.net/Pharaon/uJy5t/