Abra una URL en una nueva pestaña (y no en una nueva ventana)
Frecuentes
Visto 2,945 equipos
2376
Estoy tratando de abrir un Enlance en una nueva pestaña, a diferencia de una ventana emergente.
He visto preguntas relacionadas en las que las respuestas se verían así:
window.open(url,'_blank');
window.open(url);
Pero ninguno de ellos funcionó para mí, el navegador aún intentó abrir una ventana emergente.
30 Respuestas
1046
Nada de lo que un autor pueda hacer puede optar por abrirse en una nueva pestaña en lugar de en una nueva ventana; es un preferencia del usuario. (Tenga en cuenta que la preferencia de usuario predeterminada en la mayoría de los navegadores es para nuevas pestañas, por lo que una prueba trivial en un navegador donde esa preferencia no se ha cambiado no lo demostrará).
CSS3 propuesto objetivo-nuevo, pero la especificación fue abandonada.
El marcha atrás no es verdad; especificando ciertas características de la ventana para la ventana en el tercer argumento de window.open()
, puede activar una nueva ventana cuando la preferencia sea por pestañas.
respondido 06 nov., 20:16
¿Cómo es que esta es la respuesta aceptada? Probé las siguientes respuestas de duke y arikfr y funcionan perfectamente bien en FF, Chrome y Opera, excepto IE (donde no funciona) y Safari (donde se abre en una nueva ventana en lugar de en una nueva pestaña). - CobaltoBebéOso
@AliHaideri El Javascript no tiene nada que ver con cómo se abre la nueva pestaña / ventana. Todo está determinado por la configuración de su navegador. Utilizando window.open
le dice al navegador que abra algo nuevo, luego el navegador abre lo que se elige en su configuración: pestaña o ventana. En los navegadores con los que probó, cambie la configuración para abrir en una nueva ventana en lugar de una pestaña y verá que las soluciones de los demás son incorrectas. - Ian
Dos cosas que hacen perder el tiempo a otras personas más que decirles algo que no se pueden hacer. (1) Decirles algo que no se puede hacer podemos estar hecho. (2) Mantenerse en silencio y dejar que sigan buscando una manera de hacer algo que no se puede hacer. - Quentin
@Luke: Si se trata de cómo obtener esta funcionalidad solo en su propio navegador, probablemente sea una pregunta para el sitio de SuperUsers. - Trevor
@Bondye - La pregunta es sobre nuevos fichas en lugar de nuevas ventanas. El hecho de que seas nuevo ventanas es más bien el punto. - Quentin
1973
Esto es un truco
function openInNewTab(url) {
window.open(url, '_blank').focus();
}
//or just
window.open(url, '_blank').focus();
En la mayoría de los casos, esto debería suceder directamente en el onclick
controlador del enlace para evitar bloqueadores de ventanas emergentes y el comportamiento predeterminado de "nueva ventana". Puede hacerlo de esta manera, o agregando un detector de eventos a su DOM
objeto.
<div onclick="openInNewTab('www.test.com');">Something To Click On</div>
http://www.tutsplanet.com/open-url-new-tab-using-javascript/
respondido 24 mar '21, 08:03
No funciona. Recibí un mensaje a la derecha de la barra de direcciones: Ventana emergente bloqueada. Luego permití las ventanas emergentes. Y voilà, se abre en una ventana emergente, no en una de la lengüeta! Chrome 22.0.1229.94 en OS X Lion. - nalmente
@ b1naryatr0phy Eso es porque en realidad no lo probaste correctamente. Cambie la configuración en sus navegadores. La configuración de su navegador determina si se abre en una pestaña o ventana. No hay nada que pueda hacer llamando a window.open (o cualquier Javascript) para elegir cómo abrir la nueva ventana / pestaña. - Ian
Pregunta: configuré una URL sin protocolo (por ejemplo, my.site.com/Controller/Index). Como resultado, obtengo una nueva ventana (pestaña) por URL, como la URL de la página actual (desde donde uso la función OpenInNewTab) y la paso a la URL de la función. Con el protocolo se abre la ventana mediante el enlace correcto. ¿Por qué? - user2167382
var win = window.open (url, '_blank'); el '_blank' no es necesario, para ventana.open (), el segundo parámetro es strWindowName, para: Un nombre de cadena para la nueva ventana. El nombre se puede utilizar como destino de enlaces y formularios utilizando el atributo de destino de una o elemento. El nombre no debe contener espacios en blanco. Tenga en cuenta que strWindowName no especifica el título de la nueva ventana. - HYDRAnger
@hydRAnger mismo ventana.open () enlace en MDN: para abrir un nueva ventana en cada llamada de window.open()
, usa el valor especial _blank
para windowName
. - rdela
404
window.open()
no se abrirá en una nueva pestaña si no está sucediendo en el evento de clic real. En el ejemplo dado, la URL se abre en el 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 que está haciendo la llamada Ajax con el async : false
conjunto de opciones.
contestado el 27 de mayo de 17 a las 01:05
Sería bueno marcar esta como la respuesta CORRECTA. Mis pruebas con Chrome v26 (Windows) confirman que si el código está dentro del controlador de clic de un botón, abre una nueva pestaña y si el código se invoca mediante programación, por ejemplo, desde la consola, entonces abre una nueva ventana. - ciberfónico
@Ian De mis pruebas en navegadores con configuraciones predeterminadas, esta respuesta funciona en los casos en que las respuestas anteriores no lo hacen. La respuesta aceptada que dice "no hay nada que pueda hacer" solo es cierta cuando el usuario ha cambiado la configuración predeterminada. - Garfield
@Ian En aras de la claridad, mencioné esto en la advertencia de respuesta sobre la configuración del usuario. "Esto funcionará siempre que el usuario tenga la configuración adecuada en el navegador". Creo que la mayoría de los usuarios no cambian la configuración del navegador y esta respuesta funciona para la mayoría de ellos. - Venkat Kotra
async: false
no funciona en Chrome. Para abrir una nueva ventana desde la devolución de llamada, primero debe abrir una ventana vacía antes de enviar la solicitud HTTP y luego actualizarla. Aquí hay un buen truco. - atacomsiano
279
function openInNewTab(href) {
Object.assign(document.createElement('a'), {
target: '_blank',
href: href,
}).click();
}
Crea un elemento virtual a, le da target = "_ blank" para que se abra en una nueva pestaña, le da la URL adecuada href y luego hace clic en él.
y luego puedes usarlo como:
openInNewTab("https://google.com");
Nota importante:
openInNewTab
(así como cualquier otra solución en esta página) se debe llamar durante la llamada de retorno llamada 'evento confiable', por ejemplo. durante evento de clic (no es necesario en la función de devolución de llamada directamente, pero durante la acción de clic). De lo contrario, el navegador bloqueará la apertura de una nueva página.
Si lo llama manualmente en algún momento aleatorio (por ejemplo, dentro de un intervalo o después de la respuesta del servidor), es posible que el navegador lo bloquee (lo que tiene sentido, ya que sería un riesgo de seguridad y podría conducir a una mala experiencia del usuario)
Respondido 24 Feb 21, 12:02
Gracias. A su JS puro le falta una pieza: como escribió Luke Alderton (ver más abajo), debe adjuntar el elemento creado al cuerpo del documento, en su código está colgado en el vacío y al menos en Firefox 37 no hace nada . - ancianoverde
@mcginniwa Cualquier acción como esta, si no se activa por una acción del usuario, como hacer clic con el mouse, se convertirá en un bloqueador de ventanas emergentes. Imagine que puede abrir cualquier URL con Javascript sin la acción del usuario, eso sería bastante peligroso. Si coloca este código dentro del evento como la función de clic, funcionará bien, es lo mismo con todas las soluciones propuestas aquí. - Adán Pietrasiak
Puede simplificar su código de la siguiente manera: $('<a />',{'href': url, 'target', '_blank'}).get(0).click();
- Shaedrich
@shaedrich inspirado por su recorte, agregué una línea que no es de jquery: Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
- Adán Pietrasiak
@ shaedrich- ¿Cómo incluir un texto en el código proporcionado por usted que tendrá el enlace a la página (especificado en la URL)? - user12379095
258
window.open
No se pueden abrir ventanas emergentes de manera confiable en una pestaña nueva en todos los navegadores
Diferentes navegadores implementan el comportamiento de window.open
de diferentes formas, especialmente con respecto a las preferencias del navegador de un usuario. No puede esperar el mismo comportamiento para window.open
sea cierto en todo Internet Explorer, Firefox y Chrome, debido a las diferentes formas en que manejan las preferencias del navegador de un usuario.
Por ejemplo, los usuarios de Internet Explorer (11) pueden elegir abrir ventanas emergentes en una nueva ventana o una nueva pestaña, no puede obligar a los usuarios de Internet Explorer 11 a abrir ventanas emergentes de cierta manera a través de window.open
, como se alude en La respuesta de Quentin.
En cuanto a los usuarios de Firefox (29), utilizando window.open(url, '_blank')
depende de las preferencias de pestañas de su navegador, aunque puede obligarlos a abrir ventanas emergentes en una nueva ventana especificando un ancho y un alto (consulte la sección "¿Qué pasa con Chrome?" a continuación).
Demostración
Vaya a la configuración de su navegador y configúrelo para abrir ventanas emergentes en una nueva ventana.
Internet Explorer (11)
Página de prueba
Después de configurar Internet Explorer (11) para abrir ventanas emergentes en una nueva ventana como se demostró anteriormente, use la siguiente página de prueba para probar window.open
:
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814');">
<code>window.open(url)</code>
</button>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', '_blank');">
<code>window.open(url, '_blank')</code>
</button>
</body>
</html>
Observe que se abren las ventanas emergentes en una nueva ventana, no en una nueva pestaña.
También puede probar esos fragmentos de arriba en Firefox (29) con su preferencia de pestaña configurada para nuevas ventanas, y ver los mismos resultados.
¿Qué pasa con Chrome? Implementa window.open
A diferencia de Internet Explorer (11) y Firefox (29).
No estoy 100% seguro, pero parece Chrome (versión 34.0.1847.131 m
) no parece tener ninguna configuración que el usuario pueda usar para elegir si abrir o no ventanas emergentes en una nueva ventana o en una nueva pestaña (como lo tienen Firefox e Internet Explorer). lo comprobé la documentación de Chrome para administrar ventanas emergentes, pero no mencionó nada sobre ese tipo de cosas.
También, trabaja para una vez más, diferentes navegadores parecen implementar el comportamiento de window.open
de manera diferente. En Chrome y Firefox, especificar un ancho y alto forzará una ventana emergente, incluso cuando un usuario ha configurado Firefox (29) para abrir nuevas ventanas en una nueva pestaña (como se menciona en las respuestas a JavaScript se abre en una nueva ventana, no en una pestaña):
<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<button onclick="window.open('https://stackoverflow.com/q/4907843/456814', 'test', 'width=400, height=400');">
<code>window.open(url)</code>
</button>
</body>
</html>
Sin embargo, el mismo fragmento de código anterior siempre abrirá una nueva pestaña en Internet Explorer 11 si los usuarios establecen pestañas como preferencias de su navegador, ni siquiera especificar un ancho y alto forzará una nueva ventana emergente para ellos.
Entonces el comportamiento de window.open
en Chrome parece ser abrir ventanas emergentes en una nueva pestaña cuando se usa en un onclick
evento, para abrirlos en nuevas ventanas cuando se usan desde la consola del navegador (como lo han señalado otras personas) y para abrirlos en nuevas ventanas cuando se especifiquen con un ancho y un alto.
Resumen
Diferentes navegadores implementan el comportamiento de window.open
de manera diferente con respecto a las preferencias del navegador de los usuarios. No puede esperar el mismo comportamiento para window.open
sea cierto en todo Internet Explorer, Firefox y Chrome, debido a las diferentes formas en que manejan las preferencias del navegador de un usuario.
Lectura adicional
contestado el 27 de mayo de 17 a las 01:05
No respondió la pregunta, simplemente demostró que window.open es inconsistente. - BentOnCodificación
Proporcione una solución, esta "respuesta" pide una solución: Kevin Danikowski
93
Si utiliza window.open(url, '_blank')
, se bloqueará (bloqueador de ventanas emergentes) en Chrome.
Prueba esto:
//With JQuery
$('#myButton').click(function () {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
});
Con JavaScript puro,
document.querySelector('#myButton').onclick = function() {
var redirectWindow = window.open('http://google.com', '_blank');
redirectWindow.location;
};
contestado el 24 de mayo de 19 a las 04:05
Pero en esta pregunta, no mencionan al autor del sitio. Solo quiero abrir una URL en una nueva ventana o una nueva pestaña. Esto depende del navegador. No necesitamos preocuparnos por el autor. Por favor revisa ese violín. Está funcionando - Mohammed más seguro
Se encuentra que no funcionó en js fiddle and plunker, pero funciona cuando crea un archivo html. Es porque js fiddle, la salida se muestra en iframe, por lo que la nueva ventana está bloqueada debido a the request was made in a sandboxed frame whose 'allow-popups' permission is not set
- Mohammed más seguro
72
Para elaborar la respuesta de Steven Spielberg, hice esto en tal caso:
$('a').click(function() {
$(this).attr('target', '_blank');
});
De esta manera, justo antes de que el navegador siga el enlace, estoy configurando el atributo de destino, por lo que hará que el enlace se abra en una nueva pestaña o ventana (depende de la configuración del usuario).
Ejemplo de una línea en jQuery:
$('a').attr('target', '_blank').get(0).click();
// The `.get(0)` must be there to return the actual DOM element.
// Doing `.click()` on the jQuery object for it did not work.
Esto también se puede lograr utilizando las API DOM nativas del navegador también:
document.querySelector('a').setAttribute('target', '_blank');
document.querySelector('a').click();
Respondido 14 Abr '20, 22:04
70
¡Utilizo lo siguiente y funciona muy bien!
window.open(url, '_blank').focus();
Respondido el 27 de diciembre de 19 a las 21:12
Esto podría abrirse en una nueva pestaña o ventana dependiendo de la configuración del navegador. La pregunta trata específicamente sobre la apertura en una nueva pestaña, incluso si las preferencias son para una nueva ventana. - Quentin
Cierto, pero como hemos establecido. Abrir en una pestaña o ventana es una preferencia del usuario. Esta respuesta para abrir una URL en una nueva ventana o pestaña es excelente y simple. - negar
20
Creo que no puedes controlar esto. Si el usuario ha configurado su navegador para abrir enlaces en una nueva ventana, no puede forzar esto para abrir enlaces en una nueva pestaña.
contestado el 23 de mayo de 17 a las 12:05
19
Un dato interesante es que la nueva pestaña no se puede abrir si el usuario no invoca la acción (haciendo clic en un botón o algo) o si es asíncrona, por ejemplo, esta NO se abrirá en la nueva pestaña:
$.ajax({
url: "url",
type: "POST",
success: function() {
window.open('url', '_blank');
}
});
Pero esto puede abrirse en una nueva pestaña, dependiendo de la configuración del navegador:
$.ajax({
url: "url",
type: "POST",
async: false,
success: function() {
window.open('url', '_blank');
}
});
Respondido 23 Feb 14, 20:02
Esto se bloquea como una ventana emergente en Firefox 28, Chrome 34b y Safari 7.0.2, todas las configuraciones de stock. :( - steve meisner
"la nueva pestaña no se puede abrir si el usuario no invoca la acción (haciendo clic en un botón o algo) o si es asincrónica" - cierto en Chrome, pero no en todos los navegadores. Ahorrar <script>open('http://google.com')</script>
a una .html
archivo y ábralo en una instalación nueva de una versión reciente de Firefox; Observará que Firefox abre felizmente Google en una nueva pestaña (quizás después de que le diga que permita las ventanas emergentes), no en una nueva ventana. - marca amery
14
Simplemente omitiendo los parámetros de [strWindowFeatures] se abrirá una nueva pestaña, A MENOS QUE la configuración del navegador anule (la configuración del navegador triunfa sobre JavaScript).
Nueva ventana
var myWin = window.open(strUrl, strWindowName, [strWindowFeatures]);
Nueva pestaña
var myWin = window.open(strUrl, strWindowName);
- o -
var myWin = window.open(strUrl);
contestado el 27 de mayo de 17 a las 01:05
12
(function(a){
document.body.appendChild(a);
a.setAttribute('href', location.href);
a.dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null);
return e
}(document.createEvent('MouseEvents'))))}(document.createElement('a')))
Respondido 19 Oct 13, 10:10
12
Esto no tiene nada que ver con la configuración del navegador. si está intentando abrir una nueva pestaña desde una función personalizada.
En esta página, abra una consola de JavaScript y escriba:
document.getElementById("nav-questions").setAttribute("target", "_blank");
document.getElementById("nav-questions").click();
E intentará abrir una ventana emergente independientemente de su configuración, porque el 'clic' proviene de una acción personalizada.
Para comportarse como un 'clic del mouse' real en un enlace, debe seguir El consejo de @ spirinvladimir y realmente créalo:
document.getElementById("nav-questions").setAttribute("target", "_blank");
document.getElementById("nav-questions").dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0,
false, false, false, false, 0, null);
return e
}(document.createEvent('MouseEvents'))));
Aquí hay un ejemplo completo (no lo pruebes jsviolín o editores en línea similares, ya que no le permitirá redirigir a páginas externas desde allí):
<!DOCTYPE html>
<html>
<head>
<style>
#firing_div {
margin-top: 15px;
width: 250px;
border: 1px solid blue;
text-align: center;
}
</style>
</head>
<body>
<a id="my_link" href="http://www.google.com"> Go to Google </a>
<div id="firing_div"> Click me to trigger custom click </div>
</body>
<script>
function fire_custom_click() {
alert("firing click!");
document.getElementById("my_link").dispatchEvent((function(e){
e.initMouseEvent("click", true, true, window, /* type, canBubble, cancelable, view */
0, 0, 0, 0, 0, /* detail, screenX, screenY, clientX, clientY */
false, false, false, false, /* ctrlKey, altKey, shiftKey, metaKey */
0, null); /* button, relatedTarget */
return e
}(document.createEvent('MouseEvents'))));
}
document.getElementById("firing_div").onclick = fire_custom_click;
</script>
</html>
contestado el 23 de mayo de 17 a las 13:05
Terminé yendo a una solución diferente donde lo hago w = window.open("placeholder"); $.ajax(...ajax call that returns the url...) success (...w.location = data.url...)
según theandystratton.com/2012/… - pablo tomblin
@FahadAbidJanjua Es absolutamente no corregir. Todavía depende de la configuración del navegador. No hay nada en las especificaciones HTML o Javascript que declare que una "acción personalizada" debe abrirse en una ventana emergente en lugar de una pestaña. En efecto, ninguna de los navegadores en mi máquina actual muestran este comportamiento. - nmclean
12
Puedes usar un truco con form
:
$(function () {
$('#btn').click(function () {
openNewTab("http://stackoverflow.com")
return false;
});
});
function openNewTab(link) {
var frm = $('<form method="get" action="' + link + '" target="_blank"></form>')
$("body").append(frm);
frm.submit().remove();
}
contestado el 27 de mayo de 17 a las 01:05
Si sigue este método, asegúrese de que la URL no tenga parámetros de consulta porque se omitirán al enviar el formulario. Una solución es incrustar elementos de entrada ocultos dentro del elemento del formulario que tienen name
como clave y value
como valor para todos los parámetros dentro de los parámetros de consulta. Y luego envíe el formulario - Mudasir Ali
Esto se puede hacer de forma más sencilla con un a
etiqueta en lugar de un formulario, y usando jQuery .click()
método para "enviarlo". cheque mi respuesta - usuario3186555
12
function openTab(url) {
const link = document.createElement('a');
link.href = url;
link.target = '_blank';
document.body.appendChild(link);
link.click();
link.remove();
}
Respondido 26 Jul 19, 10:07
9
Ya sea para abrir la URL en una nueva pestaña o en una nueva ventana, en realidad está controlado por las preferencias del navegador del usuario. No hay forma de anularlo en JavaScript.
window.open()
se comporta de manera diferente dependiendo de cómo se esté utilizando. Si esto es llamado como resultado directo de una acción del usuario, digamos que haga clic en un botón, debería funcionar bien y abrir una nueva pestaña (o ventana):
const button = document.querySelector('#openTab');
// add click event listener
button.addEventListener('click', () => {
// open a new tab
const tab = window.open('https://attacomsian.com', '_blank');
});
Sin embargo, si intentas abrir una nueva pestaña desde una devolución de llamada de solicitud AJAX, el navegador lo bloqueará ya que no fue una acción directa del usuario.
A omitir el bloqueador de ventanas emergentes y abra una nueva pestaña desde una devolución de llamada, aquí hay una pequeño truco:
const button = document.querySelector('#openTab');
// add click event listener
button.addEventListener('click', () => {
// open an empty window
const tab = window.open('about:blank');
// make an API call
fetch('/api/validate')
.then(res => res.json())
.then(json => {
// TODO: do something with JSON response
// update the actual URL
tab.location = 'https://attacomsian.com';
tab.focus();
})
.catch(err => {
// close the empty window
tab.close();
});
});
Respondido 24 Oct 20, 10:10
No estoy seguro de por qué se rechaza esto: esto funcionó para mí y parece una forma inteligente de abrir una pestaña en una devolución de llamada. - stevex
@stevex: está respondiendo una pregunta completamente diferente a la que se hizo. Esta respuesta se trata de interactuar con bloqueadores de ventanas emergentes, no de abrir una nueva pestaña cuando se envían las preferencias del navegador del usuario para abrir una nueva ventana. - Quentin
4
JQuery
$('<a />',{'href': url, 'target': '_blank'}).get(0).click();
JS
Object.assign(document.createElement('a'), { target: '_blank', href: 'URL_HERE'}).click();
Respondido el 05 de diciembre de 19 a las 18:12
Esto podría abrirse en una nueva pestaña o ventana dependiendo de la configuración del navegador. La pregunta trata específicamente sobre la apertura en una nueva pestaña, incluso si las preferencias son para una nueva ventana. - Quentin
3
O simplemente puede crear un elemento de enlace y hacer clic en él ...
var evLink = document.createElement('a');
evLink.href = 'http://' + strUrl;
evLink.target = '_blank';
document.body.appendChild(evLink);
evLink.click();
// Now delete it
evLink.parentNode.removeChild(evLink);
Esto no debería estar bloqueado por ningún bloqueador de ventanas emergentes ... Con suerte.
respondido 06 nov., 13:17
3
Hay una respuesta a esta pregunta y no es un no.
Encontré una solución fácil en torno a:
Paso 1: crea un enlace invisible:
<a id="yourId" href="yourlink.html" target="_blank" style="display: none;"></a>
Paso 2: haga clic en ese enlace mediante programación:
document.getElementById("yourId").click();
¡Aqui tienes! Funciona de maravilla para mí.
Respondido el 21 de Septiembre de 18 a las 20:09
Esto podría abrirse en una nueva pestaña o ventana dependiendo de la configuración del navegador. La pregunta trata específicamente sobre la apertura en una nueva pestaña, incluso si las preferencias son para una nueva ventana. - Quentin
3
No use target = "_ blank"
Siempre use un nombre específico para esa ventana en mi caso meaningfulName
, en este caso, ahorra recursos del procesador:
button.addEventListener('click', () => {
window.open('https://google.com', 'meaningfulName')
})
De esta manera, cuando hace clic, por ejemplo, 10 veces en el botón, el navegador siempre lo volverá a representar en una pestaña nueva, en lugar de abrirlo en 10 pestañas diferentes, lo que consumirá muchos más recursos.
Puede leer más sobre esto en MDN
.
Respondido 21 Jul 20, 09:07
2
Investigué mucha información sobre cómo abrir una nueva pestaña y permanecer en la misma pestaña. He encontrado un pequeño truco para hacerlo. Supongamos que tiene una URL que necesita abrir: URL nueva y URL antigua - URL actual, que debe permanecer encendido después de que se abra una nueva pestaña. El código JS se verá más o menos a continuación:
// init urls
let newUrl = 'http://example.com';
let currentUrl = window.location.href;
// open window with url of current page, you will be automatically moved
// by browser to a new opened tab. It will look like your page is reloaded
// and you will stay on same page but with new page opened
window.open(currentUrl , '_blank');
// on your current tab will be opened new url
location.href = newUrl;
Respondido el 28 de diciembre de 19 a las 09:12
La pregunta es sobre abrir una nueva pestaña cuando la preferencia del usuario es abrirla en nuevas ventanas. No se trata de preguntar cómo abrir una URL en una pestaña nueva y al mismo tiempo abrir otra URL en la pestaña existente. - Quentin
Esto no funcionará en caso de que el bloqueador de anuncios esté instalado. El bloqueador de anuncios cerrará la pestaña actual. - Saqib Omer
0
¿Qué tal crear un <a>
_blank
as target
valor de atributo y el url
as href
, con visualización de estilo: ¿oculto con un elemento secundario? Luego agregue al DOM y luego active el evento de clic en un elemento secundario.
ACTUALIZAR
Eso no funciona. El navegador evita el comportamiento predeterminado. Podría activarse mediante programación, pero no sigue el comportamiento predeterminado.
Compruébalo y compruébalo por ti mismo: http://jsfiddle.net/4S4ET/
contestado el 27 de mayo de 17 a las 01:05
0
Esto podría ser un truco, pero en Firefox si especifica un tercer parámetro, 'fullscreen = yes', se abre una nueva ventana.
Por ejemplo,
<a href="#" onclick="window.open('MyPDF.pdf', '_blank', 'fullscreen=yes'); return false;">MyPDF</a>
En realidad, parece anular la configuración del navegador.
contestado el 27 de mayo de 17 a las 01:05
-1
Abrir una nueva pestaña desde una extensión de Firefox (Mozilla) es así:
gBrowser.selectedTab = gBrowser.addTab("http://example.com");
Respondido el 23 de Septiembre de 14 a las 17:09
-1
Esta forma es similar a la solución anterior pero implementada de manera diferente
.social_icon -> alguna clase con CSS
<div class="social_icon" id="SOME_ID" data-url="SOME_URL"></div>
$('.social_icon').click(function(){
var url = $(this).attr('data-url');
var win = window.open(url, '_blank'); ///similar to above solution
win.focus();
});
contestado el 27 de mayo de 15 a las 17:05
-1
esto funciona para mí, solo prevenga el evento, agregue la URL a un <a>
tag
luego active el evento de clic en eso tag
.
Js
$('.myBtn').on('click', function(event) {
event.preventDefault();
$(this).attr('href',"http://someurl.com");
$(this).trigger('click');
});
HTML
<a href="#" class="myBtn" target="_blank">Go</a>
respondido 02 nov., 17:02
Esto podría abrirse en una nueva pestaña o ventana dependiendo de la configuración del navegador. La pregunta trata específicamente sobre la apertura en una nueva pestaña, incluso si las preferencias son para una nueva ventana. - Quentin
-1
El window.open(url)
abrirá la URL en una nueva pestaña del navegador. La alternativa de Belowe JS
let a= document.createElement('a');
a.target= '_blank';
a.href= 'https://support.wwf.org.uk/';
a.click(); // we don't need to remove 'a' from DOM because we not add it
aquí está trabajando ejemplo (los fragmentos de stackoverflow no permiten abrir una nueva pestaña)
Respondido el 02 de enero de 20 a las 14:01
"La ventana.open (url) abrirá la url en una nueva pestaña del navegador" - Seguirá la preferencia del usuario para una nueva ventana o una nueva pestaña. No forzará una nueva pestaña cuando la preferencia sea por una ventana. (De eso se trata la pregunta). Lo mismo se aplica a target = _blank. - Quentin
Ambos enfoques que sugiere se han mencionado (y criticado) muchas veces en las 56 respuestas no eliminadas anteriores sobre esta pregunta. - Quentin
-1
Hay muchas copias de respuestas que sugieren usar "_blank" como objetivo, sin embargo, descubrí que esto no funcionó. Como señala Prakash, depende del navegador. Sin embargo, puede hacer ciertas sugerencias al navegador, como si la ventana debe tener una barra de ubicación.
Si sugieres lo suficiente "cosas en forma de pestaña" Usted podría conseguir una pestaña, según la respuesta de Nico a esta pregunta más específica para Chrome:
window.open('http://www.stackoverflow.com', '_blank', 'toolbar=yes, location=yes, status=yes, menubar=yes, scrollbars=yes');
Descargo de responsabilidad: esto no es una panacea. Aún depende del usuario y del navegador. Ahora, al menos, ha especificado una preferencia más para el aspecto que le gustaría que tuviera su ventana.
Respondido 13 ago 20, 13:08
-4
Estoy un poco de acuerdo con la persona que escribió (parafraseado aquí): "Para un enlace en una página web existente, el navegador siempre abrirá el enlace en una nueva pestaña si la nueva página es parte del mismo sitio web que la página web existente ". Para mí, al menos, esta "regla general" funciona en Chrome, Firefox, Opera, IE, Safari, SeaMonkey y Konqueror.
De todos modos, hay una forma menos complicada de aprovechar lo que presentó la otra persona. Suponiendo que estamos hablando de su propio sitio web ("thissite.com" a continuación), donde desea controlar lo que hace el navegador, entonces, a continuación, desea que "specialpage.htm" esté VACÍO, sin HTML en absoluto ( ¡Ahorra tiempo enviando datos desde el servidor!).
var wnd, URL; //global variables
//specifying "_blank" in window.open() is SUPPOSED to keep the new page from replacing the existing page
wnd = window.open("http://www.thissite.com/specialpage.htm", "_blank"); //get reference to just-opened page
//if the "general rule" above is true, a new tab should have been opened.
URL = "http://www.someothersite.com/desiredpage.htm"; //ultimate destination
setTimeout(gotoURL(),200); //wait 1/5 of a second; give browser time to create tab/window for empty page
function gotoURL()
{ wnd.open(URL, "_self"); //replace the blank page, in the tab, with the desired page
wnd.focus(); //when browser not set to automatically show newly-opened page, this MAY work
}
Respondido el 23 de junio de 14 a las 07:06
-7
Si solo desea abrir los enlaces externos (enlaces que van a otros sitios), este fragmento de JavaScript / jQuery funciona bien:
$(function(){
var hostname = window.location.hostname.replace('www.', '');
$('a').each(function(){
var link_host = $(this).attr('hostname').replace('www.', '');
if (link_host !== hostname) {
$(this).attr('target', '_blank');
}
});
});
Respondido 23 Feb 14, 20:02
Esta respuesta no es adecuada para esta pregunta, ¡PERO, esto es muy útil! ¡Gracias por tu idea! - Nuri Akman
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas javascript or haz tu propia pregunta.
Esto suele ser una cuestión de preferencia. A algunas personas les gustan las ventanas (y protegen ferozmente este comportamiento), algunas pestañas (y protegen ferozmente este comportamiento). Por lo tanto, estaría derrotando un comportamiento que generalmente se considera una cuestión de gusto, no de diseño. - Jared Farrish
Javascript no sabe nada sobre su navegador y pestañas frente a ventanas, por lo que realmente depende del navegador decidir cómo abrir una nueva ventana. - Andrey
¿Cómo puedo configurar Chrome para que lo muestre en una nueva pestaña, en lugar de una ventana emergente? - Mark
Gmail hace esto de alguna manera, al menos en Chrome. Shift + clic en una fila de correo electrónico y abre ese correo electrónico en una nueva ventana. Ctrl + clic y lo abre en una nueva pestaña. El único problema: profundizar en el código ofuscado de Gmail es un PITA - Sergio
@Sergio, ese es el comportamiento predeterminado del navegador para cualquier enlace. (Para Chrome y Firefox al menos). No tiene nada que ver con Gmail. - Qtax