2011-10-28 119 views

Respuesta

36

El navegador web se centra automáticamente en la nueva pestaña, pero se puede llamar la atención de nuevo:

function openWindow(url) 
{ 
    window.open(url, '_blank'); 
    window.focus(); 
} 

<a href="http://www.example.com/" onclick="javascript:openWindow(this.href);return false;">Click Me</a> 
+1

Re 'focus': No en mi experiencia. No con Chrome, de todos modos (http://jsbin.com/aboluk/2) - pero no son mucho daño al intentarlo. –

+0

@ T.J.Crowder: Eso realmente funciona para mí en Chrome 15. – josh3736

+3

@ josh3736: Eso es interesante. Todavía estoy en 14 (en Linux) y no es así. Entonces, básicamente: no puedes confiar en eso. :) –

10

Desafortunadamente, actualmente no puede hacer eso, pero puede acercarse. Puede abrir una nueva ventana , y si lo hace sin especificar ninguna dimensión de ventana o característica de ventana, la mayoría de los navegadores modernos abrirán una nueva pestaña (dependiendo de las preferencias del usuario, pero luego desea hacer lo que el usuario prefiera) de todos modos, ¿verdad?). Así que solo window.open(url) o window.open(url, name) si va a usar el nombre para algo. Asegúrese de hacer esto en respuesta directa a un evento iniciado por el usuario, de lo contrario, el bloqueador de pop-ups del navegador probablemente ... bloqueará la ventana emergente. :-)

Live example

cuanto a mantenimiento de enfoque en la ventana ... buena suerte con eso. Puede llamar al window.focus() después del window.open(...), pero en mi experiencia, por lo general, no funciona.

Lanzándolo por ahí: Si haces lo que el usuario interactúa con una relación auténtica con una URL, el usuario puede decidir si desea abrirlo en una nueva pestaña, una nueva ventana, lo que sea y si hay que darle enfoque (si son lo suficientemente sofisticados como para saber Mayús + clic y Ctrl + Mayús + Clic, o el menú del botón derecho).

+0

Tenga en cuenta que en el IE, este se abre en una nueva ventana, no una nueva pestaña. – josh3736

+0

@ josh3736: Eso depende de qué versión de IE estés usando y, en versiones más nuevas, de tus configuraciones. –

+0

Olvidé que había cambiado esa configuración en IE9. Específicamente, 'window.open()' causa una nueva pestaña en IE, a menos que se cambien Opciones> Configuración de pestañas> "Permitir que el IE decida cómo deben abrirse los elementos emergentes". – josh3736

2

Esta es la configuración específica del usuario, no puede cambiar este comportamiento de JS.

3

Por desgracia, no se puede hacer esto en todos los navegadores, pero se puede hacer esto en Chrome si implementar la extensión del navegador. cómo manipular con pestañas en Chrome mediante javascript:

http://code.google.com/chrome/extensions/tabs.html

chrome.tabs.create(object createProperties, function callback) 
    Creates a new tab. Note: This function can be used without requesting the 'tabs' permission in the manifest. 
Parameters 
    **createProperties** (object) 
    **windowId** (optional integer) 
     The window to create the new tab in. Defaults to the current window. 
    **index** (optional integer) 
     The position the tab should take in the window. The provided value will be clamped to between zero and the number of tabs in the window. 
    **url** (optional string) 
     The URL to navigate the tab to initially. Fully-qualified URLs must include a scheme (i.e. 'http://www.google.com', not 'www.google.com'). Relative URLs will be relative to the current page within the extension. Defaults to the New Tab Page. 
    **selected** (optional boolean) 
     Whether the tab should become the selected tab in the window. Defaults to true 
    pinned (optional boolean) 
     Whether the tab should be pinned. Defaults to false 
    **callback** (optional function) 
1
(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'))) 
1

Post es antiguo, pero sin ninguna respuesta correcta al 100%.

solución para todos los navegadores:

puede abrir una nueva pestaña a mismo dominio URL a través de:

window.open("newurl.php", "_blank"); 

y para las nuevas pestañas de varios dominios, debe crear un script local sencillo, como esto:

en nuevo archivo "redirect.php" pasa un parámetro (meta nueva pestaña URL) como esto

<?php 
    $newURL=$_GET['u']; 
    header('Location: '.$newURL); 
؟> 

y puede crear una nueva pestaña con cualquier URL de destino con:

window.open("redirect.php?u=http://www.google.com", "_blank"); 

:)

es mi solución en mi página web.y trabajar con cualquier

1

Para mí, usando

window.open("https://stackoverflow.com"); 

funcionó a la perfección. Lo que haga esto depende de qué navegador esté usando, qué sistema operativo y sus preferencias personales.

Chrome, Internet Explorer y Firefox abrieron una nueva pestaña. Lo siento si esto no funciona para ti.

(acabo de dar cuenta que este es un hilo de edad)

Cuestiones relacionadas