「外部リンクをすべて新しいタブで開く」が、テキストを選択すると機能しない

  1. /my/preferences/interfaceOther インターフェイスオプションで すべての外部リンクを新しいタブで開く オプションがチェックされていることを確認してください(いずれにせよ、デフォルト設定のようです)。
  2. 外部リンクを含む投稿を見つけます – ランダムな例は metatry です。
  3. その投稿で見つけた最初の外部リンクをクリックします(できれば同じもの)。

新しいタブで開きます。良いですね。:+1:

しかし:

  1. /my/preferences/interfaceOther インターフェイスオプションで すべての外部リンクを新しいタブで開く オプションがチェックされていることを確認してください(いずれにせよ、デフォルト設定のようです)。
  2. 前のテストと同じ投稿を開きます。
  3. この投稿で任意のテキストを選択します(1文字以上、1単語以上、どのような選択でも構いません) – 浮動する 引用 ボタンが表示されるはずです。
  4. その投稿で見つけた最初の外部リンクをクリックします

:no_entry: :see_no_evil: :warning: これで外部リンクは新しいタブではなく、現在のタブで開かれます。 :warning: :see_no_evil: :no_entry:


:information_source: 実際には、ここにあるこの投稿で簡単に試すことができます。

  1. この外部リンク をクリックします – OK、良いですね :+1: 新しいタブ
  2. このテキストを選択します
  3. ステップ1の外部リンクを再度クリックします – NG :no_entry: 現在のタブ
「いいね!」 4

確認できます。ユーザーがわざわざ問題を起こしているような、例外的なケースのように思えるため、修正する価値があるかどうかは定かではありません。

「いいね!」 1

修正が難しいとお考えですか?

私はよくクリックします。よくテキストを選択します。
そのため、非常に頻繁に迷惑を被ります。

このバグについては以前から言及していましたが、今回ほどうまく説明したことはありませんでした。 :wink:

That is annoying.

If you don’t have the skills to submit a PR (I don’t think I do) then just using control-click to open in a new tab will work, isn’t hard to automatize, and will solve the problem on every site, even those that don’t open links in new tabs.

それは迷惑ですね。

もしあなたがPRを提出するスキルを持っていないなら(私は持っていないと思います)、コントロールクリックで新しいタブで開くだけでうまくいきます。自動化は難しくなく、新しいタブでリンクを開かないサイトでも、あらゆるサイトの問題を解決できます。

「いいね!」 1

Ctrl+クリックを使用しますが、すべての外部リンクを新しいタブで開くという便利なオプションがあります。

しかし、このオプションが実際に行うことは、ランダムな外部リンクを新しいタブで開くことです。

再現スキームを特定するのに数か月、場合によっては数年かかりました。
私には本当にランダムに思えました。

一貫した動作のために、このオプションを削除しますか?

簡単なCSSの問題のPRのためにDiscourseの開発環境をセットアップしようとしたことを覚えています。
しかし、私の記憶が正しければ、PCが古すぎてすべての要件をインストールまたは実行できなかったため、断念しました。

「いいね!」 1

以前のDiscourse開発環境インストールの失敗が見つかりました。
私の個人的なLinux PCは古すぎ、プロフェッショナルなWindowsラップトップではハイパースレッディングが有効になっていませんでした。

私の新しいプロフェッショナルラップトップは、現在ハイパースレッディング\*が有効になっているようなので、新しい指示に従えるかどうか、管理者権限なしで試してみます。

\* wmic CPU Get NumberOfCores,NumberOfLogicalProcessorsは、物理コアよりも多くの論理コアを示しています。

こんにちは。

CSSで修正可能だと思います。

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

お役に立てば幸いです。まだあまりテストしていませんが、うまく機能するようです。:slightly_smiling_face:

編集: user-select: text はリンクに追加する必要があります。なぜなら、.cooked で選択されたテキストだけでなく、サイト上のすべての選択されたテキストが影響を受けるからです。コードを変更しました。

「いいね!」 6

それは私には魔法のように見えます。どのように機能するのか知りたいのですが、このトリックを説明していただけますか? :hugs:

「いいね!」 2

素晴らしい洞察力ですね、ドン。プルリクエストを提出しますか?

「いいね!」 6

サム、ありがとうございます。提出前にさらに詳しくテストしたところ、残念ながらこれでは十分ではないようです。このソリューションは Chrome でのみ機能します。

「いいね!」 5

バグの原因となっているコードは次のとおりです(app/assets/javascripts/discourse/app/lib/click-track.js より)

    // Cancel click if triggered as part of selection.
    const selection = window.getSelection();
    if (selection.type === "Range" || selection.rangeCount > 0) {
      if (selectedText() !== "") {
        return true;
      }
    }

このコードを削除すると問題は解決し、テストが壊れるようには見えません(変更前と変更後の両方で、理由不明ですがいくつかのテストが失敗していますが、新しいテストは明らかにありません)。
そのため、このコードが何か役立つことをしているのか疑問に思っています。なぜなら、少なくとも一つ確かなことは、それが言われていることをしていないということです。そうでなければ、バグ報告者は「選択 + クリック」時にリンクをまったくたどれないはずですが、それは彼の苦情ではありません。
誰か、このコードが何を達成することを意図しているのか教えていただけますか?

「いいね!」 1

もしかしたら、テキストを選択して引用する際に、新しいタブでリンクが開くのを防ぐために作られたのかもしれません。

見つけたコードが無効になっていて、「すべての外部リンクを新しいタブで開く」オプションがオンになっている場合、

リンクを含むテキストを選択(マウスダウン、ドラッグ、マウスアップ)して、リンクが開かないかどうか試していただけますか?

リンクを囲むような選択と、リンクの途中で終わるような選択も試してみてください。

選択は常に選択のみであり、リンクを開くべきではありません。

はい、そのような選択はリンクをたどったり新しいタブで開いたりすることなく、期待どおりに機能します。

「いいね!」 1

特定のブラウザの回避策があったような気がしますが、Safari/Firefox/Chromeで試してみて、何かトリガーされるか確認してみてはどうでしょうか?

「いいね!」 1

Firefox、Chromeで動作します。UbuntuでSafariを試すにはどうすればよいですか?

「いいね!」 1

開発サーバーはWi-Fiからアクセスできますか?そうすれば、スマートフォンでもテストできます。

おそらく、タッチスクリーンの指ドラッグイベントがリンクを開いている可能性があります。

このスマートフォンブラウザ(Firefox、Chromiumベース、またはSafari)をテスト済みブラウザリストに追加できます。:smiling_face_with_sunglasses:

ところで、このバグに対するあなたの作業に本当に感謝しています!!

このキャンセルコードの理由を以下に見つけました。

トピック内でコンテンツを選択し、リンクの上にマウスを離した場合にクリックを防ぎます。

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

[削除されたトピック]

興味深いコメント:

テストのためにWindowsプラットフォームしか利用できません。

この修正は、ファイルをまとめてコンソールに貼り付けるだけで簡単にテストできます。

@sam トピックページを読み込んだ後にコンソールに貼り付けるべきファイルはどれか分かりますか?
@Aleksey_Bogdanov そのファイルを提供していただければ、WindowsのVivaldi、Firefox、Android 9 Kiwiブラウザのコンソールに貼り付けます。あなたはiOS、Mac OS Safariに貼り付けていただけますか。

もうそのようには機能しないと思います。

「いいね!」 1

AndroidのChromeとFirefoxでは問題は検出されませんでしたが、Firefoxでは選択がそれほど自由ではありませんでした。

「いいね!」 1

あなたの変更前も同じでしたよね?