JavaScript を使用して URL を解析する方法の詳細な説明

青灯夜游
リリース: 2020-11-26 18:02:11
転載
11543 人が閲覧しました

JavaScript を使用して URL を解析する方法の詳細な説明

Web 開発では、URL を解析する必要がある状況が数多くあります。この記事では主に、URL オブジェクトを使用して次のことを行う方法を学習します。これを達成します。

開始

次の内容を含む HTML ファイルを作成し、ブラウザで開きます。

    
        JavaScript URL parsing
    
    
        
    
ログイン後にコピー

この記事の内容を試してみたい場合は、

URL とは

これは非常に単純ですが、明確にしておきます。 URL は、Web ページの固有のコンテンツを取得するためにブラウザに入力できる Web ページのアドレスです。これはアドレス バーで確認できます。

JavaScript を使用して URL を解析する方法の詳細な説明

URL は、Uniform Resource Locator であり、インターネットから利用できるリソースの場所とアクセス方法を簡潔に表現したものです。インターネット上の標準リソースのアドレス。インターネット上のすべてのファイルには固有の URL があり、その URL には、ファイルの場所とブラウザがファイルに対して何を行うべきかを示す情報が含まれています。

また、基本的な URL パスの仕組みがよくわからない場合は、この記事を参照して学習してください。

URL はすべて同じように見えるわけではありません

簡単に注意してください。URL は、次のように非常に奇妙になる場合があります:

https://example。 com: 1234/page/?a=b

http://localhost/page.html

https://154.23.54.156/page?x=...

file :///Users/username/folder/file.png

現在の URL を取得する

現在のページの URL を取得するのは非常に簡単です。## を使用できます。 #window.location

これを作成したスクリプトに追加してみてください:

console.log(window.location);
ログイン後にコピー
ブラウザ コンソールを確認してください:

JavaScript を使用して URL を解析する方法の詳細な説明

望んでいることではありませんか? それは、ブラウザに表示される実際の URL アドレスを返すのではなく、URL オブジェクトを返します。この URL オブジェクトを使用すると、URL のさまざまな部分を解析できます。これについては次に説明します。

URL オブジェクトの作成

すぐにわかるように、URL オブジェクトを使用して URL のさまざまな部分を理解できます。現在のページの URL だけでなく、任意の URL に対してこれを実行したい場合はどうすればよいでしょうか?これを行うには、新しい URL オブジェクトを作成します。作成方法は次のとおりです:

var myURL = new URL('https://example.com');
ログイン後にコピー
とても簡単です。

myURL を印刷して、myURL の内容を表示できます。

console.log(myURL);
ログイン後にコピー

JavaScript を使用して URL を解析する方法の詳細な説明

この記事では、myURL を次のように設定します。値:

var myURL = new URL('https://example.com:4000/folder/page.html?x=y&a=b#section-2')
ログイン後にコピー
これをコピーして

URL オブジェクトの構造

URL オブジェクトを使用すると、URL のさまざまな部分を非常に簡単に取得できます。 URL オブジェクトから取得できるものはすべて次のとおりです。これらの例では、上記で設定した

myURL を使用します。

href

URL の

href は、基本的に文字列 (テキスト) としての URL 全体です。ページの URL を URL オブジェクトではなく文字列として指定したい場合は、window.location.href と記述できます。

console.log(myURL.href);
// Output: "https://example.com:4000/folder/page.html?x=y&a=b#section-2"
ログイン後にコピー

プロトコル

URL のプロトコルは最初の部分です。これにより、HTTP または HTTPS などを介してページにアクセスする方法がブラウザーに指示されます。ただし、

ftp (ファイル転送プロトコル) や ws (WebSocket) など、他にも多くのプロトコルがあります。通常、Web サイトでは HTTP または HTTPS が使用されます。

ただし、コンピュータ上でファイルを開いている場合は、おそらくファイル プロトコルを使用していると思われます。 URL オブジェクトのプロトコル部分には

: が含まれますが、// は含まれません。 myURL を見てみましょう!

console.log(myURL.protocol);
// Output: "https:"
ログイン後にコピー

ホスト名

ホスト名はサイトのドメイン名です。ドメイン名に詳しくない場合は、

google.comcodetheweb.blog など、ブラウザに表示される URL の主要部分がドメイン名です。

console.log(myURL.hostname);
// Output: "example.com"
ログイン後にコピー

ポート

URL のポート番号はドメイン名の後ろにあり、コロンで区切られています (例:

example.com:1234#) ##)。ほとんどの URL にはポート番号がありませんが、これは非常にまれです。 ポート番号は、データの取得に使用されるサーバー上の特定の「チャネル」です。したがって、

example.com

があれば、複数の異なるポートで異なるデータを送信できます。ただし、通常、ドメイン名はデフォルトで特定のポートに設定されるため、ポート番号は必要ありません。 myURL: のポート番号を見てみましょう。

console.log(myURL.port);
// Output: "4000"
ログイン後にコピー

主机(host)

主机只是主机名端口放在一起,尝试获取 myURL 的主机:

console.log(myURL.host);
// Output: "example.com:4000"
ログイン後にコピー

来源(origin)

origin 由 URL 的协议,主机名和端口组成。 它基本上是整个 URL,直到端口号结束,如果没有端口号,到主机名结束。

console.log(myURL.origin);
// Output: "https://example.com:4000"
ログイン後にコピー

pathname(文件名)

pathname 从域名的最后一个 “/” 开始到 “?” 为止,是文件名部分,如果没有 “?” ,则是从域名最后的一个 “/” 开始到 “#” 为止 , 是文件部分, 如果没有 “?” 和 “#” , 那么从域名后的最后一个 “/” 开始到结束 , 都是文件名部分。

console.log(myURL.pathname);
// Output: "/folder/page.html"
ログイン後にコピー

锚点(hash)

“#” 开始到最后,都是锚部分。可以将哈希值添加到 URL 以直接滚动到具有 ID 为该值的哈希值 的元素。 例如,如果你有一个 idhello 的元素,则可以在 URL 中添加 #hello 就可以直接滚动到这个元素的位置上。通过以下方式可以在 URL 获取 “#” 后面的值:

console.log(myURL.hash);
// Output: "#section-2"
ログイン後にコピー

查询参数 (search)

你还可以向 URL 添加查询参数。它们是键值对,意味着将特定的“变量”设置为特定值。 查询参数的形式为 key=value。 以下是一些 URL 查询参数的示例:

?key1=value1&key2=value2&key3=value3
ログイン後にコピー

请注意,如果 URL 也有 锚点(hash),则查询参数位于 锚点(hash)(也就是 ‘#’)之前,如我们的示例 URL 中所示:

console.log(myURL.search);
// Output: "?x=y&a=b"
ログイン後にコピー

但是,如果我们想要拆分它们并获取它们的值,那就有点复杂了。

使用 URLSearchParams 解析查询参数

要解析查询参数,我们需要创建一个 URLSearchParams 对象,如下所示:

var searchParams = new URLSearchParams(myURL.search);
ログイン後にコピー

然后可以通过调用 searchParams.get('key')来获取特定键的值。 使用我们的示例网址 - 这是原始搜索参数:

?x=y&a=b
ログイン後にコピー

因此,如果我们调用 searchParams.get('x'),那么它应该返回 y,而 searchParams.get('a')应该返回 b,我们来试试吧!

console.log(searchParams.get('x'));
// Output: "y"
console.log(searchParams.get('a'));
// Output: "b"
ログイン後にコピー

扩展

获取 URL 的中参数

方法一:正则法

function getQueryString(name) {
    var reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    var r = window.location.search.substr(1).match(reg);
    if (r != null) {
        return unescape(r[2]);
    }
    return null;
}
// 这样调用:
alert(GetQueryString("参数名1"));
alert(GetQueryString("参数名2"));

alert(GetQueryString("参数名3"));
ログイン後にコピー

方法二:split拆分法

function GetRequest() {
    var url = location.search; //获取url中"?"符后的字串
    var theRequest = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for(var i = 0; i 

修改 URL 的中某个参数值

//替换指定传入参数的值,paramName为参数,replaceWith为新值
function replaceParamVal(paramName,replaceWith) {
    var oUrl = this.location.href.toString();
    var re=eval('/('+ paramName+'=)([^&]*)/gi');
    var nUrl = oUrl.replace(re,paramName+'='+replaceWith);
    this.location = nUrl;
  window.location.href=nUrl
}
ログイン後にコピー

原文地址:https://codetheweb.blog/2019/01/21/javascript-url-parsing/

为了保证的可读性,本文采用意译而非直译。

更多编程相关知识,请访问:编程学习网站!!

以上がJavaScript を使用して URL を解析する方法の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!