77

javascriptで新しいLocationオブジェクトを作成することは可能ですか? 文字列として URL があり、JavaScript が既に提供しているものを利用して、そのさまざまな部分にアクセスしたいと考えています。

これが私が話していることの例です(私はこれがうまくいかないことを知っています):

var url = new window.location("http://www.example.com/some/path?name=value#anchor");
var protocol = url.protocol;
var hash = url.hash;
// etc etc

このようなことは可能ですか、それとも本質的にこのオブジェクトを自分で作成する必要がありますか?

4

4 に答える 4

123

たとえば、アンカー要素を使用してURLパーツを抽出できます。

var url = document.createElement('a');
url.href = "http://www.example.com/some/path?name=value#anchor";
var protocol = url.protocol;
var hash = url.hash;

alert('protocol: ' + protocol);
alert('hash: ' + hash);
​

最新のすべてのブラウザで動作し、IE5.5以降でも動作します。

ここで例を確認してください。

于 2010-07-09T14:37:11.023 に答える
38

標準のURL オブジェクトを使用するのはどうですか?

const url = new URL("http://www.example.com/some/path?name=value#anchor");
const { hash } = url;

するとconsole.log(hash)出力されます#anchor

警告: このインターフェイスは少し新しいため、transpilerを使用していない場合は、互換性テーブルを確認し、ターゲット ブラウザーでテストを行ってください。

于 2015-11-25T16:41:27.047 に答える
8

アンカー要素の力を活用できます

var aLink = document.createElement("a");
aLink.href="http://www.example.com/foo/bar.html?q=123#asdf";
alert(aLink.pathname);
于 2010-07-09T14:44:56.450 に答える
-4

正規表現で解析して、パーツを一致するものとして取得できます...現在、完全なコードはありませんが、これを使用してクエリデータを取得できます。

var myUrl = window.location.href;
var matches = myUrl.match(/([^\?]+)\?(.+)/);
var queryData = matches[2];

matches [0]は完全な文字列であり、matches(1)はURLの最初の部分(?まで)です...必要に応じて、文字列urlの各部分を解析する正規表現を作成できます...

これには、すでに存在する多くのライブラリの1つを使用することもできます。

于 2010-07-09T14:36:18.050 に答える