js教程

JavaScript如何获取自己的加载路径

我的站长站 2024-09-24 人阅读

我们都知道JavaScript获取当前路径的方法用:

var currentFullPath = window.location.href;
console.log(currentFullPath);

这样就可以获取完整路径。


今天我的站长站分享不是获取当前URL路径,而且获取JS自己本身的加载路径,比如获取:

<script src="https://www.wdzzz.com/Style/js/jquery.min.js" type="text/javascript"></script>

中的

https://www.wdzzz.com/Style/js/jquery.min.js

代码如下

在JavaScript中,如果你想获取当前JavaScript文件的路径,你可以使用document.currentScript属性(如果你在HTML中以<script>标签引入JS),然后获取其src属性。以下是一个示例代码:

// 获取当前运行的 JavaScript 脚本标签
var script = document.currentScript;
// 获取脚本的 src 属性,即当前脚本的路径
var scriptPath = script.src;
console.log(scriptPath);

请注意,document.currentScript在一些老旧的浏览器中可能不支持,因此使用时需要考虑兼容性问题。


document.currentScript目前浏览器都兼容,只有特别老的浏览器不兼容,如果你还要考虑很老的浏览器兼容性,那可以使用下面这段代码。

function getCurrentScriptPath() {
    // 获取当前正在执行的script标签
    var script = document.currentScript;
    // 如果不支持document.currentScript,则尝试通过调用栈获取
    if (!script) {
        try {
            throw new Error();
        } catch (e) {
            // 获取调用栈,并尝试从中获取script标签
            var stack;
            if (e.stack) {
                stack = e.stack.split('\n').pop(); // 获取最后一行
            } else if (window.opera) {
                stack = e.backtrace.split('\n').pop(); // 对于opera
            }
            if (stack) {
                var matches = stack.match(/((http|https|file):\/\/[-A-Za-z0-9+&@#/%?=~_|!:,.;]*[-A-Za-z0-9+&@#/%=~_|])/i);
                var src = (matches && matches[1]) || '';
                if (src) {
                    return src;
                }
            }
        }
    }
    // 返回script标签的src属性值
    return script && script.src || '';
}
 
var scriptPath = getCurrentScriptPath();
console.log(scriptPath);


这种方法可以在需要使用JS传参的时候使用,比如:

<script src="https://www.wdzzz.com/Style/js/jquery.min.js?wdzzz=wdzzz" type="text/javascript"></script>

然后在js获取自己路径,最后获取wdzzz的参数。

JS教程标签