open - JavaScript abierto en una nueva ventana, no pestaña
javascript crear nueva ventana (15)
Tengo un cuadro de selección que llama a window.open(url)
cuando se selecciona un elemento. Firefox abrirá la página en una nueva pestaña por defecto. Sin embargo, me gustaría que la página se abra en una nueva ventana, no en una nueva pestaña.
¿Cómo puedo lograr esto?
Acabo de probar esto con IE (11) y Chrome (54.0.2794.1 canario SyzyASan):
window.open(url, "_blank", "x=y")
... y se abrió en una nueva ventana.
Lo que significa que Clint pachl tenía razón cuando dijo que proporcionar cualquier parámetro causará que se abra la nueva ventana.
- ¡Y al parecer no tiene que ser un parámetro legítimo!
(YMMV - como dije, solo lo probé en dos lugares ... y la próxima actualización podría invalidar los resultados, de cualquier manera)
ETA: Me acabo de dar cuenta, sin embargo, en IE, la ventana no tiene decoraciones.
Creo que no es un problema de propiedades de destino html, pero no se seleccionó "abrir nw windows en una nueva pestaña en lugar de" opción en "pestaña" pestaña en el menú de "opciones" de firefox. Compruébalo y vuelve a intentarlo.
Curiosamente, encontré que si pasas una cadena vacía (en lugar de una cadena nula o una lista de propiedades) para el tercer atributo de window.open, se abriría en una nueva pestaña para Chrome, Firefox e IE. Si faltaba, el comportamiento era diferente.
Entonces, esta es mi nueva llamada:
window.open(url, windowName, '''');
Dar a la ventana un parámetro ''especificaciones'' con ancho / alto. Vea here para todas las opciones posibles.
window.open(url, windowName, "height=200,width=200");
Cuando especifique un ancho / alto, lo abrirá en una nueva ventana en lugar de una pestaña.
La clave son los parámetros:
Si proporciona Parámetros [Altura = "", Ancho = ""], entonces se abrirá en nuevas ventanas.
Si NO proporciona Parámetros, se abrirá en una nueva pestaña.
Probado en Chrome y Firefox
No deberías necesitarlo. Permitir que el usuario tenga las preferencias que desee.
Firefox lo hace de manera predeterminada porque abrir una página en una nueva ventana es molesto y nunca se debe permitir que una página lo haga si eso no es lo que desea el usuario. (Firefox te permite abrir pestañas en una nueva ventana si lo configuras de esa manera).
No necesita usar altura, solo asegúrese de usar _blank
. Sin ella, se abre en una nueva pestaña.
Para una ventana vacía:
window.open('''', ''_blank'', ''toolbar=0,location=0,menubar=0'');
Para una URL específica:
window.open(''http://www.google.com'', ''_blank'', ''toolbar=0,location=0,menubar=0'');
OK, después de hacer un montón de pruebas, aquí mi conclusión:
Cuando realizas:
window.open(''www.yourdomain.tld'',''_blank'');
window.open(''www.yourdomain.tld'',''myWindow'');
o lo que sea que coloque en el campo de destino, esto no cambiará nada: la nueva página se abrirá en una nueva pestaña (dependerá de las preferencias del usuario)
Si desea que la página se abra en una nueva ventana "real", debe poner un parámetro adicional. Me gusta:
window.open(''www.yourdomain.tld'', ''mywindow'',''location=1,status=1,scrollbars=1, resizable=1, directories=1, toolbar=1, titlebar=1'');
Después de la prueba, parece que el parámetro extra que usa, realmente no importa: este no es el hecho de que ponga "este parámetro" o "este otro" que crea la nueva "ventana real" sino el hecho de que hay nuevos parámetros (s) ).
Pero algo está confundido y puede explicar muchas respuestas incorrectas:
Esta:
win1 = window.open(''myurl1'', ''ID_WIN'');
win2 = window.open(''myurl2'', ''ID_WIN'', ''location=1,status=1,scrollbars=1'');
Y esto:
win2 = window.open(''myurl2'', ''ID_WIN'', ''location=1,status=1,scrollbars=1'');
win1 = window.open(''myurl1'', ''ID_WIN'');
NO dará el mismo resultado.
En el primer caso, al abrir una página sin un parámetro adicional, se abrirá en una nueva pestaña . Y en este caso, la segunda llamada también se abrirá en esta pestaña debido al nombre que le dé.
En el segundo caso, como su primera llamada se realiza con un parámetro adicional, la página se abrirá en una nueva " ventana real ". Y en ese caso, incluso si la segunda llamada se realiza sin el parámetro adicional, también se abrirá en esta nueva " ventana real " ... ¡pero en la misma pestaña!
Esto significa que la primera convocatoria es importante ya que decidió dónde colocar la página.
Para mí la solución era tener
"location=0"
en el 3er parámetro. Probado en la última versión de FF / Chrome y una versión anterior de IE11
El método completo de llamada que uso está abajo (como me gusta usar un ancho variable):
window.open(url, "window" + id, ''toolbar=0,location=0,scrollbars=1,statusbar=1,menubar=0,resizable=1,width='' + width + '',height=800,left=100,top=50'');
Puede intentar la siguiente función:
<script type="text/javascript">
function open(url)
{
var popup = window.open(url, "_blank", "width=200, height=200") ;
popup.location = URL;
}
</script>
El código HTML para su ejecución:
<a href="#" onclick="open(''http://www.google.com'')">google search</a>
Puede que me equivoque, pero por lo que entiendo, esto está controlado por las preferencias del navegador del usuario, y no creo que pueda anularse.
Respondió here . Pero publicándolo de nuevo como referencia.
window.open()
no se abrirá en una nueva pestaña si no ocurre en el evento de clic real. En el ejemplo dado, la url se está abriendo en un evento de clic real. Esto funcionará siempre que el usuario tenga la configuración adecuada en el navegador.
<a class="link">Link</a>
<script type="text/javascript">
$("a.link").on("click",function(){
window.open(''www.yourdomain.com'',''_blank'');
});
</script>
De manera similar, si está tratando de hacer una llamada ajax dentro de la función de clic y desea abrir una ventana en caso de éxito, asegúrese de estar haciendo la llamada ajax con el conjunto de opciones async : false
.
Tratar:
window.open("", [window name], "height=XXX,width=XXX,modal=yes,alwaysRaised=yes");
Tengo un código que hace lo que usted dice, pero contiene muchos parámetros. Creo que esto es lo mínimo, déjame saber si no funciona, publicaré el resto.
Tuve esta misma pregunta pero encontré una solución relativamente simple.
En JavaScript estaba comprobando para window.opener !=null;
para determinar si la ventana era una ventana emergente. Si está utilizando un código de detección similar para determinar si la ventana en la que se está renderizando el sitio es una ventana emergente, puede "desactivarla" fácilmente cuando desee abrir una ventana "nueva" con el nuevo JavaScript de Windows.
Simplemente coloque esto en la parte superior de su página para que siempre sea una ventana "nueva" .
<script type="text/javascript">
window.opener=null;
</script>
Utilizo esto en la página de inicio de sesión de mi sitio para que los usuarios no tengan un comportamiento emergente si usan una ventana emergente para navegar a mi sitio.
Incluso podría crear una página de redirección simple que haga esto y luego se mueva a la URL que le dio. Algo como,
JavaScript en la página principal:
window.open("MyRedirect.html?URL="+URL, "_blank");
Y luego, utilizando un pequeño javascript desde here , puede obtener la URL y redirigirla.
JavaScript en la página de redireccionamiento:
<script type="text/javascript">
window.opener=null;
function getSearchParameters() {
var prmstr = window.location.search.substr(1);
return prmstr != null && prmstr != "" ? transformToAssocArray(prmstr) : {};
}
function transformToAssocArray( prmstr ) {
var params = {};
var prmarr = prmstr.split("&");
for ( var i = 0; i < prmarr.length; i++) {
var tmparr = prmarr[i].split("=");
params[tmparr[0]] = tmparr[1];
}
return params;
}
var params = getSearchParameters();
window.location = params.URL;
</script>
prueba ese método .....
function popitup(url) {
//alert(url);
newwindow=window.open("http://www.zeeshanakhter.com","_blank","toolbar=yes,scrollbars=yes, resizable=yes, top=500, left=500, width=400, height=400");
newwindow.moveTo(350,150);
if (window.focus)
{
newwindow.focus()
}
return false;
}