Expand description
HTML 属性の相対パス解決(純粋モジュール)。
resolve_dom_paths が <img src> <script src> <link href>
<video src> を書き換えるときに使う。
§触ってはいけない値がある
この関数は「パスらしきもの」だけを組み立て直す。
【2026-08-27 バグ修正】以前は判定が
「/ で始まる」か「:// を含む」だけで、次の 4 種が壊れていた。
data:image/png;base64,iVBORw0K...base64 は/を含む。split('/')で分解され、..に見える断片でpop()まで走る。画像が完全に壊れる。 インライン画像は実サイトでごく普通に使われる。#about/dir/#aboutという存在しないパスになる。 同一ページ内の移動が「404」になって見える。mailto:/tel:/javascript:/dir/mailto:someone@example.comになる。//cdn.example.com/lib.js(プロトコル相対)/で始まるので現在ホストの絶対パスとして扱われ、 別ホストへ取りに行かない。url_resolve::resolve_urlは こちらを正しく処理していたので、作法が食い違っていた。
§判定の基準
最初の / より前に : があればスキーム付きとみなす
(data:、mailto:、https: など)。これは URL の一般規則で、
個別のスキーム名を並べるより漏れにくい。
Functions§
- has_
scheme - 値がスキーム付き(
data:mailto:https:など)か。 - is_
opaque - そのまま渡すべき値か(組み立て直してはいけない)。
- resolve_
relative_ path base_path(ディレクトリ。末尾/)とrel_pathを繋いで正規化する。