ventana pestaña nueva abrir javascript google-chrome

pestaña - abrir nueva ventana php javascript



Abra una nueva pestaña en el fondo? (6)

Al usar javascript, quiero abrir una nueva página en una pestaña diferente, pero permanezco enfocado en la pestaña actual. Sé que puedo hacerlo así:

open(''http://example.com/''); focus();

Sin embargo, cuando hago esto en Chrome, parpadea la nueva pestaña por un momento antes de volver a la pestaña actual. Quiero evitar esto.

La aplicación es un marcador personal, por lo que solo debe funcionar en el último Chrome.


Aquí hay un ejemplo completo para navegar URL válida en una nueva pestaña con centrado.

HTML:

<div class="panel"> <p> Enter Url: <input type="text" id="txturl" name="txturl" size="30" class="weburl" /> &nbsp;&nbsp; <input type="button" id="btnopen" value="Open Url in New Tab" onclick="openURL();"/> </p> </div>

CSS:

.panel{ font-size:14px; } .panel input{ border:1px solid #333; }

JAVASCRIPT:

function isValidURL(url) { var RegExp = /(ftp|http|https):////(/w+:{0,1}/w*@)?(/S+)(:[0-9]+)?(//|//([/w#!:.?+=&%@!/-//]))?/; if (RegExp.test(url)) { return true; } else { return false; } } function openURL() { var url = document.getElementById("txturl").value.trim(); if (isValidURL(url)) { var myWindow = window.open(url, ''_blank''); myWindow.focus(); document.getElementById("txturl").value = ''''; } else { alert("Please enter valid URL..!"); return false; } }

También creé un contenedor con la solución en http://codebins.com/codes/home/4ldqpbw


Hice exactamente lo que estás buscando de una manera muy simple. Es perfectamente fluido en Google Chrome y Opera, y casi perfecto en Firefox y Safari. No probado en IE.

function newTab(url) { var tab=window.open(""); tab.document.write("<!DOCTYPE html><html>"+document.getElementsByTagName("html")[0].innerHTML+"</html>"); tab.document.close(); window.location.href=url; }

Fiddle: http://jsfiddle.net/tFCnA/show/

Explicaciones
Digamos que hay ventanas A1 y B1 y sitios web A2 y B2.
En lugar de abrir B2 en B1 y luego regresar a A1, abro B2 en A1 y vuelvo a abrir A2 en B1.
(Otra cosa que hace que funcione es que no hago que el usuario vuelva a descargar A2, ver la línea 4)

Lo único que no le gusta es que la nueva pestaña se abre antes de la página principal.


Por lo que recuerdo, esto está controlado por la configuración del navegador. En otras palabras: el usuario puede elegir si desea abrir una nueva pestaña en segundo plano o en primer plano. También pueden elegir si se debe abrir una nueva ventana emergente en una pestaña nueva o simplemente ... emergente.

Por ejemplo en las preferencias de Firefox:

Observe la última opción.


Prueba esto. Funciona bien con Chrome, también funcionó desde la extensión de Chrome. Todo lo anterior no funcionó para mí.

chrome.tabs.create({ url: "http://www.google.com/", selected: false });


THX para esta pregunta! Funciona bien para mí en todos los navegadores populares:

function openNewBackgroundTab(){ var a = document.createElement("a"); a.href = window.location.pathname; var evt = document.createEvent("MouseEvents"); //the tenth parameter of initMouseEvent sets ctrl key evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null); a.dispatchEvent(evt); } var is_chrome = navigator.userAgent.toLowerCase().indexOf(''chrome'') > -1; if(!is_chrome) { var url = window.location.pathname; var win = window.open(url, ''_blank''); } else { openNewBackgroundTab(); }


ACTUALIZACIÓN: según la versión 41 de Google Chrome, initMouseEvent parecía tener un comportamiento diferente.

esto se puede hacer simulando ctrl + click (o cualquier otra combinación de tecla / evento que abra una pestaña de fondo) en a elemento generado dinámicamente con su atributo href establecido en la url deseada

En acción: fiddle

function openNewBackgroundTab(){ var a = document.createElement("a"); a.href = "http://www.google.com/"; var evt = document.createEvent("MouseEvents"); //the tenth parameter of initMouseEvent sets ctrl key evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, true, false, false, false, 0, null); a.dispatchEvent(evt); }

probado solo en cromo