2011-09-26 12 views
11

Actualmente estoy diseñando una aplicación de foro simple. Está principalmente impulsado por jQuery/AJAX y carga todo en la misma página; sin embargo, sé que a veces los usuarios quieren abrir varios temas a la vez para verlos en pestañas nuevas cuando navegan en un foro.jQuery: detectar el clic del mouse y abrir el objetivo en la nueva pestaña

Mi solución a esto fue detectar cuando se hace clic en el botón central del mouse y se hace clic en el botón izquierdo del mouse, y luego se realizan diferentes acciones. Quiero cargar el objetivo con AJAX en la ventana cuando se presiona el botón izquierdo del mouse, de lo contrario, cargarlo en una nueva pestaña.

Mi único problema es que no sé de una forma de abrir una ubicación de destino en una nueva pestaña con jQuery. Obviamente, no está permitido abrir nuevas pestañas a voluntad, pero ¿hay alguna manera de asignar este tipo de comportamiento a una acción generada por el usuario?

Gracias!

Respuesta

15

Por favor tome mirar en código de ejemplo. Puede ayudar

<script type='text/javascript'> 
    jQuery(function($){ 
     $('a').mousedown(function(event) { 
      switch (event.which) { 
       case 1: 
        //alert('Left mouse button pressed'); 
        $(this).attr('target','_self'); 
        break; 
       case 2: 
        //alert('Middle mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       case 3: 
        //alert('Right mouse button pressed'); 
        $(this).attr('target','_blank'); 
        break; 
       default: 
        //alert('You have a strange mouse'); 
        $(this).attr('target','_self"'); 
      } 
     }); 
    }); 
</script> 
+1

Al hacer clic en el enlace, ¿cambiaría el atributo de destino antes de ejecutar la acción? – Phillip

+0

Sí, cambiaré el atributo antes de la acción. –

+0

Quiero cuando el usuario hace clic en el enlace o lo abre en una nueva pestaña. El enlace se esconde, pero de esta forma es posible solo en IE ... ¿Qué puedo hacer? –

0

La acción predeterminada del botón central del mouse es abrir en una nueva pestaña.

Puede establecer el atributo de destino de hipervínculos en _blank para abrir una nueva pestaña.

<a href="#link" target="_blank">Link</a> 

También puede hacer referencia a esta pregunta How to distinguish between left and right mouse click with jQuery

+0

Necesito editar mi pregunta y dejarla más clara. Estoy buscando cargar el objetivo con AJAX con un clic izquierdo, y abrir en una nueva pestaña haciendo clic con el botón central del mouse. – Phillip

1
$('#element').mousedown(function(event) { 
      if(event.which == 3) { // right click 
       window.open("newlocation.html",""); 
      } 
    }); 

verlo en directo http://jsfiddle.net/8CHTm/1/

+0

@Philip He agregado un violín. – Ehtesham

9
<a href="some url" target="_newtab">content of the anchor</a> 

en JavaScript puede utilizar

$('#element').mousedown(function(event) { 
     if(event.which == 3) { // right click 
      window.open('page.html','_newtab'); 
     } 
}) 
+0

Ah veo, no sabía que podía establecer el atributo de destino en window.open. le daré una oportunidad. ¡Gracias! – Phillip

+0

eres bienvenido ...................: D: D: D: D –

5

Debe tener en cuenta también que ctrl-click y CMD-clic son utilizado para abrir nuevas pestañas (en Windows/Linux y Mac respectivamente. Por lo tanto, esta sería una solución más completa:

jQuery.isClickEventRequestingNewTab = function(clickEvent) { 
    return clickEvent.metaKey || clickEvent.ctrlKey || clickEvent.which === 2; 
}; 
-1

Por favor, intente "_newTab" en lugar de "_blank"

window.open (url, "_newtab");

Cuestiones relacionadas