0
votes

Empêcher l'ouverture d'une nouvelle onglet lorsque ctrl + cliquez pour emplacement.href

J'ai une fonction JavaScript avec le code suivant.

function NodeClickActions(sender, eventArgs) {
    event.preventDefault();
    //Get whether user clicked CTRL key or not
    var bCtrlPressed = eventArgs.get_browserEvent().ctrlKey;
    //URL of the actions page
    var URL = "../Actions.aspx";
   //If CTRL key was pressed
    if (bCtrlPressed) {
      parent.MainPage.location.href = URL + "?PackageId=00000000-0000-0000-0000-000000000000&All=" + bCtrlPressed;
        }
      else {
        parent.MainPage.location.href = URL;
      }
    }


3 commentaires

Dupliqué possible de Stackoverflow.com/Questtions/31472065/...


@Sunil Cette solution ne fonctionnera pas ici, j'ai peur.


Si vous pensez que vous devez dicter ce qui se passe dans mon navigateur à cet égard, alors vous faites probablement quelque chose de mal à commencer.


3 Réponses :


0
votes

Détecter la clé de Ctrl Appuyez sur ou non. Utilisez JQuery pour la manipulation des événements manipulant facilement

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="this?one">one</a>


3 commentaires

Je m'étais testé son travail. Si vous ne travaillez toujours pas, essayez avec `renvoyer false` à la place e.preventDefault


Je suppose une bonne foi complète de votre part @prasanth, mais je suis tellement désolé, cela ne fait aucune différence. Une dernière chose, je ne peux pas utiliser de retour faux car j'ai un autre chemin à gérer. Merci n'importe quelle façon mate. Acclamations.


@Posper Vérifiez la dernière réponse ci-dessous.



1
votes

Voici le moyen le plus simple pour cela, empêchant que l'URL soit beaucoup plus intelligente puis empêchant la pression des touches CTRL / CMD car la fonctionnalité comme CTRL / cmd + clic est la fonctionnalité du navigateur et ne peut pas être écrasée (ou au moins je n'ai pas avoir du succès avec elle) ... xxx pré>

dépend de la case où vous utiliserez que vous devez appliquer quelque chose de similaire pour la soumission de formulaire ... car cela est également affecté par cette fonctionnalité de navigateur P >

IMPORTANT: STRAND> OS X Utilisateurs à l'aide de la commande + clic, n'oubliez jamais que P>

Ajout: strong> Parce que vous souhaitez désactiver l'ouverture de la nouvelle fonctionnalité de l'onglet / de la fenêtre sous la liaison "Cliquez sur" Do EventDeFault pour contextMenu (bouton droit de la souris) P>

$("a").contextmenu(function(e){
    e.preventDefault();
});


0 commentaires

0
votes

Vous devez ajouter auditeur directement sur une balise d'ancrage au lieu d'utiliser la délégation d'événement et l'ajout sur l'élément parent. Exemple de travail ici .

HTML P>

$(document).ready(function ()
   {
      $("a").on('click',function(event)
      {debugger;
         event = event || window.event;
         event.preventDefault(); 
         event.stopPropagation();
        return false;
      });

});


1 commentaires

De cette façon, vous supprimez complètement les fonctionnalités de clic ... Le lien doit toujours être fonctionnel juste sans possibilité d'être ouvert dans un autre onglet à l'aide du bouton Ctrl ...