2010-07-10 40 views

Respuesta

54

Hay "ventanas nuevas" y hay "ventanas emergentes". El uso de target=_blank se abrirá en una nueva ventana, excepto que los navegadores modernos ponen ventanas nuevas en las nuevas pestañas de forma predeterminada. Lo cual parece que no es lo que quieres.

Para una ventana emergente real, quiere window.open(), y asegúrese de incluir un ancho y alto específicos, de lo contrario algunos navegadores seguirán poniendo la nueva ventana en una nueva pestaña. El ejemplo de Darin me parece bien.

En cuanto a bloqueo de ventanas emergentes, el enfoque general que los navegadores opinión es que las ventanas emergentes iniciadas por acción del usuario se les permite (como hacer clic), mientras que los popups iniciaron espontáneamente a través de la escritura, como este, están bloqueados:

<script type="text/javascript"> 
    window.open("http://www.google.com/", "Google", "width=500,height=500"); 
</script> 

Sin embargo, el anuncio de ser una escalada de la guerra de bloqueo, nunca se puede estar seguro de que una ventana emergente se abrirá. Si su ventana emergente está bloqueada, la llamada window.open devuelve null. Así que me gustaría modificar el ejemplo de Daren así:

<a href="http://www.google.com/" 
    onclick="return !window.open(this.href, 'Google', 'width=500,height=500')" 
    target="_blank"> 

Si la ventana emergente es bloqueada, onclick devuelve true, que sigue el enlace se hace clic abriéndolo en una nueva ventana o pestaña. Es una alternativa, por lo que al menos el contenido es accesible (si no es bonito).

+3

También debería agregar, es una buena idea que su contenido emergente no se rompa por completo si se abre en una ventana de navegador de tamaño completo, debido a este retroceso, y porque el usuario siempre puede hacer clic derecho en el enlace y "abrir en nueva pestaña o ventana "que evita por completo el controlador onClick. – jpsimons

9
<a href="http://google.com" onclick="window.open(this.href, 'windowName', 'width=1000, height=700, left=24, top=24, scrollbars, resizable'); return false;">Link</a> 
+0

Uno de los errores interesantes que he notado acuerdo 'window.open'. si la URL comienza con 'http: // ...', no funciona en, por ejemplo ... – Simon

2

Esto abrirá una nueva ventana.

<a href="http://google.com" target="_blank">Link</a> 
+0

Si está utilizando XHTML Strict, el atributo 'target' no valida y debe adjuntar un evento (como como 'onclick') en su lugar. Si está utilizando un tipo de documento más antiguo, está bien con 'target =" _ blank "'. – Andrew

+5

@Andrew - IMO fue una decisión * absolutamente * ridícula por parte del W3C (desaprobando el 'objetivo') ... una que se ha invertido en HTML5, en caso de que alguien lo descubra más tarde. –

+0

no ha estado siguiendo las especificaciones de HTML5 recientemente, pero las últimas revisiones sobre [W3C] (http://dev.w3.org/html5/spec/Overview.html#linkTypes) dice 'target' sigue siendo "innecesaria. Omitirlo por completo ". No estoy defendiendo esto, pero la idea es que se supone que HTML se utiliza para el diseño (que define las relaciones entre los datos de la página), CSS es para la presentación y JS es para el comportamiento. Y bajo este sistema, hacer clic en un enlace para abrir una ventana es un comportamiento. Dicho esto, las extensiones CSS de HTML5 están llenas de este tipo de violación, por lo que no veo cuál es el problema. – Andrew

1

jQuery:

<script> 
$('#button2').live("click",function(e){  
    window.open("http://www.google.com", "yyyyy", "width=480,height=360,resizable=no,toolbar=no,menubar=no,location=no,status=no"); 
return false; 
}); 
</script> 

<a href="#" id="button2" ><img src="images/online.png"></a><br/>Online 
+2

en vivo ha quedado obsoleto en jquery 1.6 Creo, use .on ("click", function() {}); – mahatmanich

-1

Puede probar el código de abajo,

<script type="text/javascript"> 
    window.open(location.href, "Google", "width=500,height=500"); 
</script> 
Cuestiones relacionadas