javascript - window.open(url, ''_blank''); no funciona en iMac/Safari
macos (5)
Hay una configuración en Safari en "Pestañas" que etiquetó Open pages in tabs instead of windows:
con un menú desplegable con algunas opciones. Estoy pensando que el tuyo puede estar configurado para Always
. En pocas palabras, no puede confiar en que un navegador abra una nueva ventana.
Construí una página web que te permite seleccionar un nombre de página de una lista desplegable y luego transfiere el navegador a esa página. El código que hace la transferencia es
if (url){
window.open(url, ''_blank'');
}
donde "url" es la página seleccionada.
Un registro de consola justo antes de la línea window.open imprime algo como:
executing: window.open(http://www.mywebsite.com/44/threats.html, ''_blank'')
y luego los navegadores abren la página en una nueva pestaña.
Esto funciona bien en Windows 7 para todos los navegadores, incluido Safari.
En un iMac funciona para Firefox pero no para Safari.
¿Alguien sabe por qué iMac / Safari no hará esto?
La sintaxis correcta es window.open(URL,WindowTitle,''_blank'')
Todos los argumentos abiertos deben ser cadenas. No son obligatorios, y se puede quitar la ventana. Entonces, newWin=open()
funciona, si planeas poblar newWin.document por ti mismo. PERO DEBES usar los tres argumentos, y el tercero se establece en ''_blank''
para abrir una nueva ventana verdadera y no una pestaña.
Para usar window.open () en safari debe colocarlo en el atributo de evento onclick de un elemento.
Por ejemplo: <div class=''btn'' onclick=''window.open("https://www.google.com", "_blank");''>Open google search</div>
Safari está bloqueando cualquier llamada a window.open () que se realiza dentro de una llamada asíncrona.
La solución que encontré para este problema es llamar a window.open antes de hacer una llamada asnyc y establecer la ubicación cuando se resuelva la promesa.
var windowReference = window.open();
myService.getUrl().then(function(url) {
windowReference.location = url;
});
Tomado del comentario de las respuestas aceptadas por Steve el 20 de diciembre de 2013:
En realidad, hay una forma muy sencilla de hacerlo: simplemente haga clic en "Bloquear ventanas emergentes" en el navegador iMac / Safari y hará lo que yo quiera.
Para aclarar, al ejecutar Safari en Mac OS X El Capitan:
- Safari -> Preferencias
- Seguridad -> Desmarque ''Bloquear ventanas emergentes''