"Ouvrir tous les liens externes dans un nouvel onglet" ne fonctionne pas lorsque vous sélectionnez du texte

  1. Assurez-vous que l’option Ouvrir tous les liens externes dans un nouvel onglet est cochée dans /my/preferences/interface sous les options d’interface Autres (C’est le réglage par défaut, de toute façon).
  2. Trouvez n’importe quel message contenant un lien externe – exemples aléatoires dans meta et dans try.
  3. Cliquez sur le premier lien externe que vous trouvez dans ce message (de préférence le même).

Il s’ouvre dans un nouvel onglet, bien. :+1:

MAIS :

  1. Assurez-vous que l’option Ouvrir tous les liens externes dans un nouvel onglet est cochée dans /my/preferences/interface sous les options d’interface Autres (C’est le réglage par défaut, de toute façon).
  2. Ouvrez le même message que le test précédent.
  3. Sélectionnez n’importe quel texte dans ce message (1+ lettre, 1+ mot, toute sélection fera l’affaire) – Vous devriez voir un bouton flottant Citer.
  4. Cliquez sur le premier lien externe que vous trouvez dans ce message.

:no_entry: :see_no_evil: :warning: Maintenant, le lien externe s’ouvre dans l’onglet actuel, au lieu d’un nouvel onglet. :warning: :see_no_evil: :no_entry:


:information_source: En fait, vous pouvez simplement essayer avec ce message ici :

  1. Cliquez sur CE LIEN EXTERNE – OK, bien :+1: nouvel onglet.
  2. Sélectionnez CE TEXTE.
  3. Cliquez à nouveau sur le lien externe de l’étape 1 – NG :no_entry: onglet actuel.
4 « J'aime »

Je peux confirmer. Je ne suis pas entièrement sûr que cela vaille la peine d’être corrigé, car il semble s’agir d’un cas limite, où l’utilisateur cherche des ennuis.

1 « J'aime »

Parce que vous pensez que cela pourrait être délicat à corriger ?

Je clique souvent. Je sélectionne souvent du texte.
Donc cela me dérange très souvent.

J’avais signalé ce bug il y a longtemps, mais je ne l’avais pas expliqué aussi bien que cette fois-ci. :wink:

C’est agaçant.

Si vous n’avez pas les compétences pour soumettre une PR (je ne pense pas en avoir), alors utiliser simplement Ctrl+clic pour ouvrir dans un nouvel onglet fonctionnera, ce n’est pas difficile à automatiser, et cela résoudra le problème sur tous les sites, même ceux qui n’ouvrent pas les liens dans de nouveaux onglets.

1 « J'aime »

J’utiliserais Ctrl+clic, mais nous avons cette belle option, appelée Ouvrir tous les liens externes dans un nouvel onglet.

Mais ce que cette option fait réellement, c’est Ouvrir des liens externes aléatoires dans un nouvel onglet.

Il m’a fallu des mois, voire des années, pour identifier un schéma de reproduction.
Cela me semblait vraiment aléatoire.

Peut-être supprimer cette option, pour un comportement cohérent ?

Je me souviens avoir essayé de configurer un environnement de développement Discourse pour un simple problème de CSS PR.
Mais, si je me souviens bien, j’ai abandonné parce que mon PC était trop vieux et que je ne pouvais pas installer ou exécuter toutes les exigences.

1 « J'aime »

J’ai retrouvé ma précédente tentative échouée d’installation d’un environnement de développement Discourse.
Mon PC Linux personnel était trop ancien et mon ordinateur portable professionnel sous Windows n’avait pas l’hyperthreading activé.

Mon nouvel ordinateur portable professionnel a maintenant apparemment l’hyperthreading activé* donc je vais voir si je peux suivre les nouvelles instructions, sans droits d’administrateur.

  • wmic CPU Get NumberOfCores,NumberOfLogicalProcessors affiche plus de cœurs logiques que de cœurs physiques.

Bonjour,

Je pense que cela peut être réparable avec CSS.

.cooked a {
  @include user-select(text);
}

J’espère que cela aide, je ne l’ai pas encore vraiment testé mais cela semble fonctionner correctement. :slightly_smiling_face:

Modification : user-select: text devrait être ajouté au lien car non seulement le texte sélectionné .cooked l’affecte, mais tout texte sélectionné sur le site. J’ai modifié le code.

6 « J'aime »

Cela me semble magique. J’aimerais savoir comment cela fonctionne, pouvez-vous m’expliquer ce tour ? :hugs:

2 « J'aime »

Excellent travail de détective Don, souhaitez-vous soumettre une PR ?

6 « J'aime »

Merci Sam, je l’ai juste testé de plus près avant de soumettre et il semble que cela ne suffise malheureusement pas. Cette solution ne fonctionne qu’avec Chrome.

5 « J'aime »

Voici le morceau de code qui cause le bug (provenant de app/assets/javascripts/discourse/app/lib/click-track.js)

    // Annuler le clic s'il est déclenché dans le cadre d'une sélection.
    const selection = window.getSelection();
    if (selection.type === "Range" || selection.rangeCount > 0) {
      if (selectedText() !== "") {
        return true;
      }
    }

La suppression de ce code résout le problème et ne semble pas casser les tests (j’ai d’ailleurs des tests qui échouent avant et après le changement, mais apparemment aucun nouveau).
Je me demande donc si ce code fait quelque chose d’utile, car une chose est sûre, il ne fait pas ce qu’il est censé faire, sinon le rapporteur de bug ne suivrait aucun lien lors d’un « sélectionner + cliquer », mais ce n’est pas sa plainte.
Quelqu’un peut-il expliquer ce que ce code est censé accomplir ?

1 « J'aime »

Peut-être est-ce fait pour empêcher l’ouverture des liens dans de nouveaux onglets lorsque l’on sélectionne simplement du texte pour le citer ?

Lorsque le code que vous avez trouvé est désactivé et que l’option « Ouvrir tous les liens externes dans un nouvel onglet » est cochée,

Pourriez-vous essayer de sélectionner (clic enfoncé, glisser, clic relâché) du texte qui inclut des liens pour voir si aucun d’entre eux ne s’ouvre ?

Essayez avec une sélection qui entoure des liens et essayez aussi avec une sélection qui se termine au milieu d’un lien, peut-être.

La sélection ne devrait toujours que sélectionner, pas ouvrir de liens.

Oui, de telles sélections fonctionnent comme prévu : sans suivre les liens ni les ouvrir dans de nouveaux onglets.

1 « J'aime »

Je me souviens vaguement qu’il existait une solution de contournement pour un navigateur spécifique, peut-être essayez-vous dans Safari/Firefox/Chrome avec une sélection pour voir si l’un d’eux la déclenche ?

1 « J'aime »

Fonctionne sur Firefox, Chrome. Comment essayer Safari sur Ubuntu ?

1 « J'aime »

Votre serveur de développement est-il accessible sur votre Wi-Fi afin que vous puissiez également tester avec votre smartphone ?

Peut-être que les événements de glissement du doigt sur l’écran tactile déclenchent l’ouverture des liens.

Vous pourriez ajouter ce navigateur mobile (Firefox, basé sur Chromium ou Safari) à votre liste de navigateurs testés. :smiling_face_with_sunglasses:

Et, au fait, merci beaucoup pour votre travail sur ce bug !!

J’ai trouvé cette raison pour ce code d’annulation, apparemment :

Empêcher un clic si l’utilisateur sélectionne du contenu dans un sujet et relâche la souris sur un lien.

https://meta.discourse.org/t/selecting-a-link-results-in-it-being-opened/14846
[sujet supprimé]

Commentaire intéressant :

Je n’ai accès qu’à la plateforme Windows pour les tests.

cette correction peut être testée facilement car le fichier peut être collé en entier dans la console.

@sam, savez-vous quel fichier nous devrions coller dans la console après avoir chargé une page de sujet ?
@Aleksey_Bogdanov, pourriez-vous fournir ce fichier et je pourrais le coller dans mes consoles Vivaldi, Firefox, Android 9 Kiwi sous Windows, et vous pourriez le coller dans votre Safari iOS, Mac OS.

Je ne pense pas que cela fonctionne encore comme ça.

1 « J'aime »

Aucun problème détecté dans Chrome et Firefox sur Android, bien que j’aie du mal à sélectionner aussi librement dans Firefox.

1 « J'aime »

C’était pareil avant votre changement, n’est-ce pas ?