2011-09-26 16 views
11

Attualmente sto progettando un'applicazione per forum semplice. È principalmente alimentato da jQuery/AJAX e carica tutto sulla stessa pagina; tuttavia, so che a volte gli utenti vogliono aprire diversi argomenti contemporaneamente per guardarli in nuove schede durante la navigazione in un forum.jQuery: Rileva il clic del mouse e apre la destinazione in una nuova scheda

La mia soluzione era quella di rilevare quando si fa clic sul pulsante centrale del mouse e si fa clic con il pulsante sinistro del mouse, quindi si eseguono azioni diverse. Voglio caricare il target con AJAX nella finestra quando si fa clic sul pulsante sinistro del mouse, altrimenti caricarlo in una nuova scheda.

Il mio unico problema è che non conosco un modo per aprire una posizione di destinazione in una nuova scheda con jQuery. Ovviamente l'apertura di nuove schede non è consentita, ma esiste un modo per assegnare questo tipo di comportamento a un'azione generata dall'utente?

Grazie!

risposta

15

Si prega di prendere guardare il codice di esempio. Può aiutare

<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

Cliccando sul link, cambierebbe l'attributo target prima che l'azione venisse eseguita? – Phillip

+0

Sì, cambierò attributo prima dell'azione. –

+0

Voglio quando l'utente fa clic sul collegamento o lo apre una nuova scheda. Il collegamento si nasconde ma con questi modi è possibile solo su IE ... cosa posso fare? –

0

L'azione predefinita del pulsante centrale del mouse si apre in una nuova scheda.

È possibile impostare l'attributo target hyperlink su _blank per aprire una nuova scheda.

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

Si può anche fare riferimento a questa domanda How to distinguish between left and right mouse click with jQuery

+0

Ho bisogno di modificare la mia domanda e renderla più chiara. Sto cercando di caricare il bersaglio con AJAX con il tasto sinistro del mouse e aprire in una nuova scheda il clic del mouse centrale. – Phillip

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

vederla dal vivo http://jsfiddle.net/8CHTm/1/

+0

@Philip Ho aggiunto un violino. – Ehtesham

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

in JavaScript è possibile utilizzare

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

Ah capisco, non sapevo di poter impostare l'attributo target su window.open. Ci proveremo. Grazie! – Phillip

+0

siete i benvenuti ...................: D: D: D: D –

5

È necessario considerare anche che ctrl-click e cmd-click sono usato per aprire nuove schede (in windows/linux e mac rispettivamente. Pertanto, questa sarebbe una soluzione più completa:

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

Riprova "_newTab" invece di "_blank"

window.open (URL, "_newtab");

Problemi correlati