我有一个名为main.js
的JavaScript文件。
在main.js
中,我想获取当前文件的绝对路径,类似于:
http://server/app/main.js
http://server/app/script/main.js
如何快速获取文件的绝对路径?
我有一个名为main.js
的JavaScript文件。
在main.js
中,我想获取当前文件的绝对路径,类似于:
http://server/app/main.js
http://server/app/script/main.js
如何快速获取文件的绝对路径?
您可以在以下链接中查看脚本集合:
var scripts = document.getElementsByTagName("script");
对于返回的scripts
数组中的每个元素,您都可以访问其src
属性。
当前执行的包含文件始终是scripts
数组中的最后一个。因此,您可以在scripts[scripts.length-1]
处访问它。
当然,这仅适用于初始代码运行时,并且不会在加载初始脚本之后调用的函数内有用。因此,如果您需要稍后可用的值,则需要将其保存到变量中。
获取JavaScript文件的当前路径名
将此代码放置在您的Apache目录下的/tmp文件夹中,并将其命名为test.html。 访问以下URL:
localhost/grader/test.html?blah=2#foobar
Javascript:
<html>
<script>
alert(location.pathname); // /tmp/test.html
alert(location.hostname); // localhost
alert(location.search); // ?blah=2
alert(document.URL); // http://localhost/tmp/test.html?blah=2#foobar
alert(location.href); // http://localhost/tmp/test.html?blah=2#foobar
alert(location.protocol); // http:
alert(location.host); // localhost
alert(location.origin); // http://localhost
alert(location.hash); // #foobar
</script>
</html>
有关位置属性的更多信息: http://www.w3schools.com/jsref/obj_location.asp
或者如果您有jQuery:
<html>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js">
</script>
<script>
$(location).attr('href'); // http://localhost/tmp/test.html?blah=2#foobar
$(location).attr('pathname'); // /tmp/test.html
</script>
</html>
这样做是可以的。但它需要你已经知道脚本文件的文件名。但在大多数情况下,你应该是已经知道了文件名的。
function absFileLoc(filename) {
var scriptElements = document.getElementsByTagName('script');
for (var i = 0; i < scriptElements.length; i++) {
var source = scriptElements[i].src;
if (source.indexOf(filename) > -1) {
var location = source.substring(0, source.indexOf(filename)) + filename;
return location;
}
}
return false;
}
获取绝对路径的最快方法是使用document.currentScript
const url = document.currentScript.src;
const url = new URL('http://www.example.com/cats');
console.log(url.hostname); // "www.example.com"
console.log(url.pathname); // "/cats"
所有现代浏览器都应该支持这些方法。
var path = document.location.pathname
将提供当前的HTML页面。
如果您正在寻找当前的脚本,请尝试此网站中提到的方法:
http://bencarpenter.co.uk/javascript-path-to-the-current-script
将此代码放入您想要获取路径的*.js文件中:
let scripts = document.getElementsByTagName('script')
let lastScript = scripts[scripts.length -1]
console.log('lastScript', lastScript.src)
我知道这是一个较旧的问题,但仍然很实际,因为IE仍未提供脚本src。
对我来说最好的方法是给脚本标签一个唯一的id:
<script id="kuvaScript" src="jscripts/kuva/kuva.min.js"></script>
在脚本中我使用:
var thisScript = $("#kuvaScript").attr("src");
var thisPath = thisScript.split('/').slice(0, -1).join('/')+'/';
它将保持src格式不变(相对或完整),并已在IE和Chrome中进行了测试。
希望它能为您节省大量时间。
如果你想获取当前文件名或目录,可以尝试这个方法
location.href.split('/')[ location.href.split('/').length - 1 ];