所以我試圖加載一個腳本動態並找出該腳本加載的URL路徑。因此,如果腳本靜態加載(How to get the file-path of the currently executing javascript code),某個人給了我一個非常棒的解決方案。但我需要一個動態加載的解決方案。例如:動態加載時獲取當前正在執行的js文件的url
$(function()
{ $.getScript("brilliant.js", function(data, textStatus)
{ // do nothing
});
});
其中 「brilliant.js」 有:
var scripts = document.getElementsByTagName("script");
var src = scripts[scripts.length-1].src;
alert("THIS IS: "+src);
理想這應該是打印出 「brilliant.js」 或 「⟨主機+基本路徑⟩ /brilliant.js」
當前,brilliant.js適用於靜態包含的腳本,但不適用於動態包含的腳本(如使用$ .getScript)。有人有主意嗎? dom中是否有存儲所有已加載腳本的地方?
編輯:安德拉斯給出了一個很好的解決方案,雖然它可能只適用於jQuery。因爲這可能是最受歡迎的圖書館,而且肯定是我將要使用的。它可能也可以擴展到其他庫。這是我的簡化版本:
var scriptUri;
curScriptUrl(function(x)
{ scriptUri = x;
alert(scriptUri);
});
function curScriptUrl(callback)
{ var scripts = document.getElementsByTagName("script");
var scriptURI = scripts[scripts.length-1].src;
if(scriptURI != "") // static include
{ callback(scriptURI);
}else if($ != undefined) // jQuery ajax
{ $(document).ajaxSuccess(function(e, xhr, s)
{ callback(s.url);
});
}
}
我喜歡什麼chamiltongt(下面)說,ajax在代碼中,然後eval()它。爲了使其能夠普遍訪問,爲什麼不設置一個微型服務器來提供您的.js代碼。這將是集中的,你可以立即爲每個用戶更新你的代碼。 – logout