これは、Javascript に依存して href を動的に変更しないとできません。相対 URI を絶対 URI に変換する方法は、RFC 3986 セクション 5.2.2で説明されています。
if defined(R.scheme) then
T.scheme = R.scheme;
T.authority = R.authority;
T.path = remove_dot_segments(R.path);
T.query = R.query;
else
if defined(R.authority) then
T.authority = R.authority;
T.path = remove_dot_segments(R.path);
T.query = R.query;
else
if (R.path == "") then
T.path = Base.path;
if defined(R.query) then
T.query = R.query;
else
T.query = Base.query;
endif;
else
if (R.path starts-with "/") then
T.path = remove_dot_segments(R.path);
else
T.path = merge(Base.path, R.path);
T.path = remove_dot_segments(T.path);
endif;
T.query = R.query;
endif;
T.authority = Base.authority;
endif;
T.scheme = Base.scheme;
endif;
T.fragment = R.fragment;
は相対R
URL で、T
はターゲットです。
上記は基本的に、スキームが相対URIで指定されている場合、ターゲットURIは相対URI全体になるため、スキームを指定する唯一の方法はURL全体を指定することです.
Javascript ベースのアプローチを使用する場合は、次のようなものを使用して href を動的に設定できますa.href = 'https://' + window.location.host + a.getAttribute('href')
。a
AnchorElement はどこにありますか。
Javascript バージョンのデモは次のとおりです: http://jsfiddle.net/7DWV5/
ただし、主に遭遇した理由により、ホスト名を構成ファイルに保存するかHost
、フロントコントローラーの HTTP 要求ヘッダーから検出することをお勧めします。そうすれば、ページの生成中に HTML にテンプレート化することができます。これにより、URL が生成された後にクライアント側のスクリプトを使用して URL を修正する必要がなくなります。これは望ましいことかもしれません。誰もが Javascript を有効にしているわけではないからです。