URL: canParse() 静的メソッド

URL.canParse()URL の静的メソッドで、絶対 URL、またはベース URL と結合した相対 URL が解析可能で有効かどうかを示す論理値を返します。

これは URLtry...catch ブロック内で組み立てるための高速で簡単な代替手段です。 これは URL() コンストラクターが成功するのと同じ値に対しては true を返し、コンストラクターが例外を発生させる値に対しては false を返します。

構文

js
URL.canParse(url)
URL.canParse(url, base)

引数

url

絶対または相対 URL を表す文字列または文字列化のあるその他のオブジェクト、例えば <a><area> 要素です。 url が相対 URL である場合、base は必須であり、ベース URL として使用されます。 url が絶対 URL である場合、指定された base は無視されます。

base 省略可

url が相対 URL の場合に使用するベース URL を表す文字列です。 指定されなかった場合、既定値は undefined です。

メモ: 引数 urlbase はそれぞれ、文字列を受け入れる他の Web API と同様に、渡された値から文字列化されます。 具体的な例としては、既存の URL オブジェクトをどちらの引数にも使用することができ、そのオブジェクトの href プロパティに文字列化されます。

返値

その URL が解釈可能で有効であれば true、そうでなければ false を返します。

このライブ例では、静的メソッド URL.canParse() を使用して、いくつか異なる絶対 URL 値と相対 URL 値を使用する方法を示します。

例の最初の部分では、ログ出力先の HTML 要素 <pre> とログ出力するメソッド log() を定義しています。

html
<pre id="log"></pre>
js
const logElement = document.getElementById("log");
function log(text) {
  logElement.innerText += `${text}\n`;
}

次に、URL.canParse() メソッドに対応しているかどうかを、"canParse" in URL という条件を用いて調べます。 メソッドが対応している場合は、絶対 URL、ベース URLのない相対 URL、有効なベース URL のある相対 URL を調べた結果をログ出力します。 URL.canParse() が対応していない場合もログ出力します。

js
if ("canParse" in URL) {
  log("有効な絶対 URL を検査");
  let url = "https://developer.mozilla.org/";
  let result = URL.canParse(url);
  log(` URL.canParse("${url}"): ${result}`);

  log("\nベース URL のない相対 URL を検査");
  url = "/ja/docs";
  result = URL.canParse(url);
  log(` URL.canParse("${url}"): ${result}`);

  log("\n有効なベース URL のある相対 URL を検査");
  let baseUrl = "https://developer.mozilla.org/";
  result = URL.canParse(url, baseUrl);
  log(` URL.canParse("${url}","${baseUrl}"): ${result}`);
} else {
  log("URL.canParse() に対応していません");
}

最後に、下記のコードは baseUrl が文字列である必要はないことを示しています。 ここでは URL オブジェクトを渡しています。

js
if ("canParse" in URL) {
  log("\nURL オブジェクトとして提供されたベース URL つきの相対 URL を検査");
  let baseUrl = new URL("https://developer.mozilla.org/");
  let url = "/ja/docs";
  result = URL.canParse(url, baseUrl);
  log(` URL.canParse("${url}","${baseUrl}"): ${result}`);
}

それぞれのチェック結果を下記に示します。

仕様書

Specification
URL Standard
# dom-url-canparse

ブラウザーの互換性

BCD tables only load in the browser

関連情報