很多時候我們都需要在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...