ホームページ >ウェブフロントエンド >jsチュートリアル >Javascript_javascript のヒントで A タグを使用して現在のディレクトリの絶対パスを取得する方法

Javascript_javascript のヒントで A タグを使用して現在のディレクトリの絶対パスを取得する方法

WBOY
WBOYオリジナル
2016-05-16 16:11:441781ブラウズ

パス関連の問題となると、誰もが window.location を思い浮かべるでしょう。実際、このオブジェクトは非常に多くのパス情報を提供します。その中には、一般的に使用されるものが含まれます。

1.location.href: 現在のページの完全な URL

2.location.pathname: 現在の URL
内のパス名 3.location.hash: 現在の URL のアンカー ポイント
4.location.search: 現在の URL のクエリパラメータ

ただし、locationにはカレントディレクトリの絶対パス(ファイル名を除く)を直接取得できる属性はありません。 Google を通じて、URL を「/」で配列に分割し、配列の最後の項目を削除して文字列に連結するなど、いくつかの間違った方法を見つけました。ただし、URL にファイル名が指定されていない場合、結果は完全に間違っています。

過去のコーディング経験に基づいて、a 要素の href 属性は常に絶対パスを返します。これは、相対パスを絶対パスに変換する機能があることを意味します。次のコードを使用して試してみたところ、うまくいきました:


コードをコピー コードは次のとおりです:
var a = document.createElement('a');
a.href = './';
アラート(a.href);
a = null;

残念ながら、この方法は古い IE 6/7 では有効ではありません。alert(a.href) を実行すると、依然として「./」が表示されます。後で、誰かが Stackoverflow でもこの質問をしていたことを知りました。その解決策は、innerHTML を通じて
を挿入するだけでした。
コードをコピー コードは次のとおりです:
var div = document.createElement('div');
div.innerHTML = '";
アラート(div.firstChild.href);
div = null;

なぜ正規表現を使用しないのかと疑問に思う人もいるかもしれません。私の答えは次のとおりです。ファイル名があるかどうか、アンカー ポイントがあるかどうか、クエリ パラメータがあるかどうかを考慮する必要があります。この正規表現は非常に複雑である可能性があります。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。