1. ホーム
  2. Web制作
  3. HTML/Xhtml

htmlに要素href URLリンクの自動更新または新しいウィンドウを開く機能実装

2022-01-25 01:36:15

リンクをクリックしたときに、そのリンクがすでにブラウザで開かれている場合はリンク先のウィンドウを更新し、開かれていない場合はリンク先のページを新しいウィンドウで開く機能を実装したい場合があります。

これは、ブラウザのタブで重複してページを開くことを避けるための、非常に素晴らしいエクスペリエンス向上策です。

重要なのは、どのように実装するか?

aタグのtarget属性機能を利用する。

a link 要素と form form 要素の両方に target という属性があり、サポートされている値には次のようなものがあります。

  • _self。デフォルト値。現在のブラウザコンテキスト。
  • _blank: 通常は新しいタブですが、ユーザーは新しいウィンドウで開くかどうかをブラウザで設定することができます。
  • _parent: 現在のブラウザコンテキストの親コンテキスト、または親がない場合は_selfと同様の動作になります。
  • _top: 最上位のブラウザコンテキスト。祖先のコンテキスト環境がない場合は、_self に似た挙動となります。

実はtargetには隠された機能があり、それは特定のURLアドレスや任意のカスタム名で指定することができるというものです。

例えば

convert = {
    '__lt__': [('__gt__', lambda self, other: other < self),
               ('__le__', lambda self, other: not other < self),
               ('__ge__', lambda self, other: not self < other)],
    '__le__': [('__ge__', lambda self, other: other <= self),
               ('__lt__', lambda self, other: not other <= self),
               ('__gt__', lambda self, other: not self <= other)],
    '__gt__': [('__lt__', lambda self, other: other > self),
               ('__ge__', lambda self, other: not other > self),
               ('__le__', lambda self, other: not self > other)],
    '__ge__': [('__le__', lambda self, other: other >= self),
               ('__gt__', lambda self, other: not other >= self),
               ('__lt__', lambda self, other: not self >= other)]
}

この時点で、ブラウザにblank.htmlアドレスのタブが既にある場合、上記のリンクをクリックしても新しいウィンドウは開かず、既に開いているblank.htmlを直接更新します。ブラウザにblank.htmlアドレスのタブがない場合、この時点でターゲット属性は「_blank」と同様の振る舞いをします。

つまり、このリンクアドレスを自動的に更新し、新しいウィンドウを開くというニーズを実現するには、link要素やform要素のtarget属性の値を対象URLアドレスの値に設定すれば良いことが分かっています。

そのため、すべての検索結果ページにタブを実装したい場合は、別の方法を用いる必要があります。これは簡単で、例えば同じ値を指定するだけです。

convert = {
		'__lt__': [('__gt__', lambda self, other: not (self < other or self == other)),
				   ('__le__', lambda self, other: self < other oder self == other),
				   ('__ge__', lambda self, other: not self < other)],
		'__le__': [('__ge__', lambda self, other: not self <= other oder self == other),
				   ('__lt__', lambda self, other: self <= other und nicht self == other),
				   ('__gt__', lambda self, other: not self <= other)],
		'__gt__': [('__lt__', lambda self, other: not (self > other oder self == other)),
				   ('__ge__', lambda self, other: self > other oder self == other),
				   ('__le__', lambda self, other: not self > other)],
		'__ge__': [('__le__', lambda self, other: (not self >= other) oder self == other),
				   ('__gt__', lambda self, other: self >= other und nicht self == other),
				   ('__lt__', lambda self, other: not self >= other)]
	}

ご覧のように href="blank.html?s=1" and href="blank.html?s=2" は同じページを指し、新しいウィンドウを2つ開くことはありません。

概要

a要素のhrefリンクの自動更新や新しいウィンドウを開く機能を実装するには、target属性の値をhref属性と同じ値に設定するだけです。

この機能は、Internet Explorer、Firefox、Chromeでサポートされていますので、ご自由にお使いください。

この記事では、要素のhtml実装について紹介しています href URLリンクが自動的に更新または新しいウィンドウを開く ここで、より関連するhtml実装urlリンクが自動的に更新または新しいウィンドウを開く内容は、スクリプトハウスの過去の記事を検索するか、次の関連記事を閲覧を続けてください、私はあなたが今後よりスクリプトハウスをサポートしてくれることを願っています!...