Web

Webページ中の特定の文字列をURLで指定する(Text Fragments)

投稿日:2021年1月15日 更新日:

1. URLにおける通常のフラグメント

一般に「URL」は Webページの住所を表しますが、末尾にフラグメント (fragment, # に続けて指定する文字列) を追加することにより、Webページ上の特定の位置を含めた表現が可能です。

例えば、アクセスしたいWebページのHTML内に、以下のタグが記述されているとします。

<a href="foo">Bar</a>

この場合、ブラウザのアドレスバーに「末尾に #foo を追加したURL」を指定してアクセスすると、ブラウザは上記のタグの位置がちょうど画面の上端にくる位置まで自動でスクロールしてくれます。

フラグメントの詳細については、URL Standard を参照してください。

2. Text Fragments(テキスト フラグメント)

Text Fragments とは?

一方、フラグメントに関する新しい仕様である Text Fragments を利用すると、Webページ上の「特定の文字列」を URL で表現することができるようになります。

テキストフラグメントを含むURLを指定してWebページにアクセスすると、ブラウザはその文字列をハイライト表示し、その位置までスクロールしてくれます。誰かに「このWebページのこの部分を伝えたい」という場合に大変便利です。

Text Fragments の使い方

テキストフラグメントのフォーマットは以下になります。

#:~:text=[prefix-,]textStart[,textEnd][,-suffix] 
          context  |-------match-----|  context
  • match で指定されている範囲が「指定したい文字列」になります(textStarttextEnd を使います)。
  • この範囲を明確にするために、context を指定することもできます(prefix--suffix を使います)。

4つの項目を指定することができます。それぞれの意味は以下の表の通りです。

prefix-
  • 指定した文字列の前の部分
  • 最後に「-」を付ける。
  • オプション
textStart
  • 指定したい文字列の始まり部分
  • 必須
textEnd
  • 指定したい文字列の終わり部分
  • オプション
-suffix
  • 指定した文字列の後の部分
  • 最初に「-」を付ける。
  • オプション

この4つの項目の文字列は、それぞれパーセントエンコーディングしてから指定します(ブラウザが自動的に変換してくれます)。

デモ

以下の文章を使って、実際にいくつかのフラグメントを試してみます(ブラウザは Chrome か Edge を使ってください)。

私はコーヒーと紅茶が好きです。

彼はコーヒーも紅茶も嫌いです。

以下の「フラグメント(とリンク)」列にリンクが貼ってあるのでクリックしてください。

No. フラグメント(とリンク) 説明
1 #:~:text=コーヒー
  • textStartのみ指定
  • 漠然と「コーヒー」としか指定していない。この場合、最初に合致したところだけがハイライト表示されるようだ。
2 #:~:text=コーヒー,紅茶
  • textStarttextEndを指定
3 #:~:text=彼は-,コーヒー
  • prefix-textStartを指定
4 #:~:text=紅茶,-も
  • textStart-suffixを指定
5 #:~:text=彼は-,コーヒー,紅茶,-も
  • prefix-, textStart, textSEnd, -suffixをすべて指定
6 #:~:text=私は-,コーヒー&text=彼は-,コーヒー,紅茶
  • 複数の文字列を指定したい場合は、&text= で条件を追加します。

※ Text Fragments によるハイライト表示は、ページを最初に開いたときしか適用されないため、上記のリンクは新規タブで開くようにしています。

3. URLを生成するための拡張機能

テキストフラグメントを含むURLを手動で作成するのは面倒です。そのため、ブラウザの画面上から簡単にURLを生成するためのブラウザ拡張機能が用意されています。詳細は以下のページを参照してください。

4. 参考

📂-Web

執筆者:labo


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

Chrome

Google Chrome 68 で、HTTPS非対応のマークが変わりました

目次1. Chrome 68 がリリース2. 以前のマーク3. Chrome 68 以降のマーク4. ついでに、https にしてアクセスしてみる5. おわりに 1. Chrome 68 がリリース …

Web

<pre><code>タグが引き起こす モバイルユーザビリティのエラー「コンテンツの幅が画面の幅を超えています」

<pre><code>タグが、モバイルユーザビリティのエラー「コンテンツの幅が画面の幅を超えています」を引き起こしていました。

Chrome

Chrome の通信ログ(TCP/IPも含む)を記録する

Chrome の通信ログ(TCP/IPも含む)を記録する方法を紹介します。

Web Vitals

LCP を意識した Highlight.js の読み込み方

LCP を意識した Highlight.js の読み込み方について説明します。

Web

Webサイトに使用されている色のコントラストをチェックする

目次1. はじめに2. Webコンテンツで推奨されるコントラスト比3. コントラスト比をチェックすることができるサービス4. コントラスト比の問題を自動的に検知する 1. はじめに 本ページでは、We …