パス関連の問題について話すとき、誰もがwindow.locationについて考えるでしょう。このオブジェクトが多くのパス情報を提供しているのは事実であり、一般的に使用されるパス情報には以下が含まれます。
1.Location.href:現在のページの完全なURL
2.Location.pathname:現在のURLのパス名
3.Location.Hash:現在のURLのアンカーポイント
4.Location.Search:現在のURLのクエリパラメーター
ただし、場所には、現在のディレクトリへの絶対パスを直接取得するプロパティがありません(ファイル名を除く)。 Googleを通じて、「/」からURLを配列に分離し、配列の最後のアイテムを削除してから文字列に連結するなど、いくつかの間違った方法を見つけました。ただし、ファイル名がURLで指定されていない場合、結果は大きな間違いです。
以前のコーディングの経験によれば、A要素のHREF属性は常に絶対パスを返します。つまり、相対パスを絶対パスに変換する能力があります。次のコードで試してみましたが、次のことが判明しました。
コードコピーは次のとおりです。
var a = document.createelement( 'a');
a.href = './';
アラート(a.href);
a = null;
残念ながら、この方法は古いIE 6/7の下では機能しません。アラート(a.href)が実行されると、ポップアップはまだ「./」です。その後、誰かがこの問題をStackoverflowで提起し、解決策も非常に簡単であることがわかりました。 internhtmlを介して挿入するだけです:
コードコピーは次のとおりです。
var div = document.createelement( 'div');
div.innerhtml = '<a href = "./"> </a> ";
アラート(div.firstchild.href);
div = null;
誰かが尋ねるかもしれません:なぜ正規表現を使わないのですか?私の答えは、ファイル名、アンカーポイント、クエリパラメーターがあるかどうかを考えると、この正規表現は非常に複雑な場合があります。