2016-04-27 9 views
0

Rubin/Rails JQueryStopp Strg + von 404 klicken für Modalverben in rubin Rückkehr/Schienen

einen Link Erzwingen in einem neuen Tab zu öffnen, durch Drücken von Strg + Klick gibt eine 404-Seite, wenn die Antwort nicht HTML ist. Ich möchte in der Lage sein, eine Warnung mit folgendem Inhalt zu senden: "Dieser Link ist in einem neuen Tab nicht verfügbar."

Was ist der beste Weg, dies global zu erreichen? Ich habe bereits die Fälle mit hohem Nutzen aktualisiert, in denen die Aktion durch ein JQuery-Ereignis "bei Klick" gesteuert wird, aber ich suche nach einer robusteren Lösung.

Beispiel: HTML:

<a href="http://some_link/some_action">some link</a> 

REGLER:

def some_action 
    ... 
    respond_to do |format| 
    format.js 
    end 
end 
+0

Sie müssen hier mindestens ein wenig Code für den Kontext geben. Das Öffnen in einem neuen Fenster sollte kein automatisches 404 verursachen, solange Ihr Link kein reines JavaScript ist. – tadman

+0

Jede Antwort, die von dem Controller zurückgegeben wird, der kein HTML ist. Zum Beispiel JS oder JSON. Ich bin nicht sicher, welche Art von Code Sie suchen? Es ist eine Verbindung und der Controller gibt JS zurück. –

+0

Ich habe meine Frage aktualisiert. –

Antwort

2

Es gibt ein paar Optionen, aber was würde ich vorschlagen, ist so etwas wie dies mit:

$('.js-non-tabbable-link').on('click', function(event) { 
 
    if (event.metaKey || event.ctrlKey){ 
 
    console.log("NOPE"); 
 
    event.preventDefault(); 
 
    } 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<a href="#" class='js-non-tabbable-link'>Click Me</a>

+0

Dies ist wahrscheinlich die beste Antwort. Wenn niemand weiß, wie man ein Steuerelement erkennt, klicken Sie auf die Controller-Aktion. –

+0

Ich werde diese Antwort akzeptieren, wenn bis morgen niemand anderes auftaucht. –

+0

Funktioniert dieser Griff mit der rechten Maustaste auf "In neuem Tab öffnen"? – tadman