«Abrir todos los enlaces externos en una nueva pestaña» no funciona cuando seleccionas texto

  1. Asegúrate de que la opción Abrir todos los enlaces externos en una nueva pestaña esté marcada en /my/preferences/interface en las opciones de interfaz Otras (De todos modos, parece ser la configuración predeterminada).
  2. Busca cualquier publicación con un enlace externo: ejemplos aleatorios en meta y en try.
  3. Haz clic en el primer enlace externo que encuentres en esa publicación (preferiblemente el mismo).

Se abre en una nueva pestaña, bien. :+1:

PERO:

  1. Asegúrate de que la opción Abrir todos los enlaces externos en una nueva pestaña esté marcada en /my/preferences/interface en las opciones de interfaz Otras (De todos modos, parece ser la configuración predeterminada).
  2. Abre la misma publicación que en la prueba anterior.
  3. Selecciona cualquier texto en esta publicación (1+ letra, 1+ palabra, cualquier selección servirá): deberías ver un botón flotante Citar.
  4. Haz clic en el primer enlace externo que encuentres en esa publicación.

:no_entry: :see_no_evil: :warning: Ahora el enlace externo se abre en la pestaña actual, en lugar de una nueva pestaña. :warning: :see_no_evil: :no_entry:


:information_source: En realidad, simplemente puedes probar con esta publicación aquí:

  1. Haz clic en ESTE ENLACE EXTERNO – OK bien :+1: nueva pestaña.
  2. Selecciona ESTE TEXTO.
  3. Haz clic en el enlace externo del paso 1, de nuevo – NG :no_entry: pestaña actual.
4 Me gusta

Puedo confirmar. No estoy completamente seguro de que valga la pena arreglarlo, ya que parece un caso extremo, donde el usuario está buscando problemas.

1 me gusta

¿Porque crees que podría ser difícil de arreglar?

A menudo hago clic. A menudo selecciono texto.
Así que me molesta muy a menudo.

Mencioné este error hace mucho tiempo pero no lo expliqué tan bien como esta vez. :wink:

Eso es molesto.

Si no tienes las habilidades para enviar una PR (no creo que las tenga), entonces simplemente usar control-clic para abrir en una nueva pestaña funcionará, no es difícil de automatizar y resolverá el problema en todos los sitios, incluso en aquellos que no abren enlaces en nuevas pestañas.

1 me gusta

Usaría Ctrl+clic, pero tenemos esta buena opción, llamada Abrir todos los enlaces externos en una nueva pestaña.

Pero lo que esta opción realmente hace es Abrir enlaces externos aleatorios en una nueva pestaña.

Me llevó meses, si no años, identificar un esquema de reproducción.
Me pareció realmente aleatorio.

¿Quizás eliminar esta opción, para un comportamiento coherente?

Recuerdo que intenté configurar un entorno de desarrollo de Discourse para una simple PR de problema de CSS.
Pero, si mal no recuerdo, me di por vencido porque mi PC era demasiado viejo y no pude instalar ni ejecutar todos los requisitos.

1 me gusta

Encontré mi intento anterior fallido de instalar un entorno de desarrollo de Discourse. Mi PC Linux personal era demasiado antiguo y mi portátil profesional con Windows no tenía activado el hyper threading.

Mi nuevo portátil profesional ahora aparentemente tiene hyper threading así que veré si puedo seguir las nuevas instrucciones, sin derechos de administrador.

wmic CPU Get NumberOfCores,NumberOfLogicalProcessors muestra más núcleos lógicos que núcleos físicos.

Hola,

Creo que se puede arreglar con CSS.

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

Espero que ayude, aún no lo he probado realmente pero parece que funciona bien. :slightly_smiling_face:

Editar: user-select: text debería añadirse al enlace porque no solo el texto seleccionado .cooked lo afecta, sino todo el texto seleccionado en el sitio. He cambiado el código.

6 Me gusta

Eso me parece magia. Me gustaría saber cómo funciona, ¿puedes explicarme este truco? :hugs:

2 Me gusta

Excelente investigación, Don. ¿Te gustaría enviar una PR?

6 Me gusta

Gracias Sam, lo estoy probando más de cerca antes de enviarlo y parece que esto no es suficiente, desafortunadamente. Esta solución solo funciona con Chrome.

5 Me gusta

Aquí está el fragmento de código que causa el error (de app/assets/javascripts/discourse/app/lib/click-track.js)

    // Cancelar clic si se activa como parte de la selección.
    const selection = window.getSelection();
    if (selection.type === "Range" || selection.rangeCount > 0) {
      if (selectedText() !== "") {
        return true;
      }
    }

Eliminar este código resuelve el problema y no parece romper las pruebas (tengo algunas pruebas fallando antes y después del cambio por alguna razón, pero aparentemente ninguna nueva).
Así que me pregunto si este código hace algo útil, porque una cosa que ciertamente no hace es lo que dice que hace, de lo contrario, el informante del error no experimentaría ningún seguimiento de enlaces al ‘seleccionar + hacer clic’, pero esa no es su queja.
¿Alguien puede compartir qué se supone que debe lograr este código?

1 me gusta

¿Quizás está hecho para evitar que se abran enlaces en nuevas pestañas cuando simplemente se selecciona texto para citarlo o copiarlo?

Cuando el código que encontraste está desactivado y tienes marcada la opción “Abrir todos los enlaces externos en una nueva pestaña”,

¿Podrías intentar seleccionar (clic izquierdo, arrastrar, soltar) texto que incluya enlaces para ver si no abre ninguno de ellos?

Intenta con una selección que rodee enlaces y también intenta con una selección que termine en medio de un enlace, quizás.

La selección siempre debería solo seleccionar, no abrir enlaces.

Sí, dichas selecciones funcionan como se espera: sin seguir enlaces ni abrirlos en nuevas pestañas.

1 me gusta

Recuerdo vagamente que había una solución alternativa para un navegador específico, ¿quizás intentar en Safari/Firefox/Chrome con una selección para ver si alguna la activa?

1 me gusta

Funciona en Firefox, Chrome. ¿Cómo debería probar Safari en Ubuntu?

1 me gusta

¿Está tu servidor de desarrollo accesible en tu wifi para que también puedas probar con tu smartphone?

Tal vez los eventos de arrastre del dedo en la pantalla táctil estén activando los enlaces abiertos.

Podrías añadir este navegador de smartphone (Firefox, basado en Chromium o Safari) a tu lista de navegadores probados. :smiling_face_with_sunglasses:

Y, por cierto, ¡muchas gracias por tu trabajo en este error!

Encontré esta razón para este código de cancelación, aparentemente:

Evita un clic si el usuario selecciona contenido en un tema y suelta el ratón sobre un enlace.

https://meta.discourse.org/t/selecting-a-link-results-in-it-being-opened/14846

[tema eliminado]

Comentario interesante:

Solo tengo acceso a la plataforma de Windows para probar.

esta corrección se puede probar fácilmente ya que el archivo se puede pegar en su totalidad en la consola.

@sam ¿sabes qué archivo deberíamos pegar en la consola después de cargar una página de tema?
@Aleksey_Bogdanov ¿podría dar ese archivo y yo podría pegarlo en mis consolas de Vivaldi, Firefox, Android 9 Kiwi de Windows, y tú podrías pegarlo en tu Safari de iOS, Mac OS?

No creo que funcione así ya.

1 me gusta

No se detectó ningún problema en Chrome y Firefox en Android, aunque me cuesta seleccionar en Firefox con tanta libertad.

1 me gusta

Era lo mismo antes de tu cambio, ¿verdad?