JavaScript 獲取目錄絕對路徑

antzone發表於2017-04-02

在介紹實現此功能的之前先看幾個常用的屬性,列表如下:

[JavaScript] 純文字檢視 複製程式碼
location.href//當前頁面的完整URL
location.pathname//當前URL中的路徑名
location.hash//當前URL中的錨點
location.search//當前URL中的查詢引數

上面的幾個屬性這裡就不多做介紹,更多內容可以參閱相關閱讀:

(1).location.href屬性參閱location.href一章節。

(2).location.pathname屬性參閱location.pathname一章節。

(3).location.hash屬性參閱location.hash一章節。

(4).location.search屬性參閱location.search一章節。

但是上面沒有一個屬效能夠直接獲取目錄的絕對路徑,可能不少朋友會想到使用location.href屬性。使用斜槓/分割字串,生成一個陣列,再去掉最後陣列元素,再進行字串連線即可,是的這種方式可以解決絕大多數問題,但是url中沒有指定的檔名,那豈不是錯的太離譜,舉個例子,如果直接輸入一個域名softwhy.com,根目錄下預設的索引頁是index.html,那麼此時輸出的就是softwhy.com,而不是softwhy.com/index.html,是不是就要出錯了。

不過我們可以使用<a>標籤來實現此功能,它的href屬性總是返回一個絕對路徑,程式碼例項如下:

[JavaScript] 純文字檢視 複製程式碼
var a = document.createElement('a');
a.href = './';
console.log(a.href);
a = null;

但是在IE6和IE7,輸出值仍然是“./”,不過可以通過把a通過innerHTML注入就可以解決此問題,程式碼如下:

[JavaScript] 純文字檢視 複製程式碼
var div = document.createElement('div');
div.innerHTML = '<a href="./"></a>';
console.log(div.firstChild.href);
div = null;

相關閱讀:

(1).document.createElement()方法參閱JavaScript createElement()一章節。

(2).innerHTML屬性參閱JavaScript innerHTML一章節。

(3).firstChild屬性參閱JavaScript firstChild一章節。

相關文章