JS獲取自身所在檔案的目錄路徑

2021-09-05 17:55:16 字數 928 閱讀 5164

很多時候我們都需要在js檔案中獲取該檔案的詳細路徑,以便根據其他檔案與該js的相對位置計算並設定其他一些檔案如或樣式或指令碼的目錄路徑。我們一般都這樣做:

假設外部js檔案的檔名為:test.js,則在test.js中都這樣寫:

var js=document.scripts;

var jspath;

for(var i=0;i-1) }

alert(jspath);

或者為了提高效率,這樣寫

var js=document.scripts;

var jspath;

for(var i=js.length;i>0;i--) }

alert(jspath);

這種思路很清晰,根據檔名獲取引用的檔案的src屬性並進行判斷擷取即可。

但這種辦法有以下兩個缺點:

1、需要遍歷頁面的js檔案,有時可能效率會比較低。

2、如果頁面中出現目錄不同的重名的js檔案則可能判斷錯誤。

其實我們可以有更簡單的辦法來準確獲取路徑,這是在一次js測試突然發現並幡然醒悟的。

var js=document.scripts;

js=js[js.length-1].src.substring(0,js[js.length-1].src.lastindexof("/")+1);

alert(js);

直接使用js.length?這會正確嗎?

其實仔細想想,由於判斷路徑的js**一般都直接放在js檔案中而不是函式中,所以當載入該js檔案時會立即執行其中的語句,而執行此語句時所獲取到的js檔案數目正好是js.length-1,因為頁面後面的js檔案還沒有載入,所以該處的js檔案獲取的數目並不是頁面所有的js檔案的數目。這樣一來,獲取路徑就無需再遍歷了,而且檔案判斷也無需檔名,判斷更加準確(js.length-1永遠都是其檔案本身)。

DLL中如何獲取自身的路徑

getmodulefilename可以獲得指定模組的路徑,如果傳入null,則輸出所在程序exe的路徑,因此在dll中要想獲得當前dll的路徑,必須獲得dll的例項。這樣我們才能得到當前dll的路徑,總結可分為如下四種方法,這些方法的不同只在於獲得dll的模組例項控制代碼方法不同 cpp view ...

DLL 內部獲取自身絕對路徑

常見的獲取方法是通過 getmodulehandle null 獲取當前exe控制代碼,然後通過getmodulefilename獲取exe路徑。dll在該路徑下加上 dll 即可。但是有時候 dll 與 exe 不一定在乙個位置,甚至 dll 並沒有按照指定的目錄關係與 exe 有明確的對應關係,...

zigbee 獲取自身的mac位址

協議棧版本 zha 1.2.1 方法1 this function will return a pointer to the device s ieee 64 bit address this function resides in nwk util.c.extern byte nlme getex...