JS获取当前脚本文件的绝对路径
获取当前脚本文件的绝对路径:深入与实现
在模块加载器开发过程中,获取当前脚本文件的绝对路径是一个关键步骤。本文将带你了解如何在各大浏览器中实现这一功能,并介绍一些相关知识。
一、各大浏览器的实现方式
Chrome和Firefox的实现方式相对简单:
```javascript
var getCurrAbsPath = function(){
return document.currentScript.src;
};
```
这里利用了`document.currentScript`对象,它返回的是当前执行的script元素。然后调用script元素的`src`属性即可获取脚本文件的绝对路径。
对于IE10+、Safari和Opera9,可以利用Error对象的stack属性(IE10+)、sourceURL属性(Safari)和stacktrace属性(Opera9)来萃取绝对路径:
```javascript
var getCurrAbsPath = function(){
var a = {}, stack;
try{
a.b(); // 这里只是用来触发错误,无需关心其内容。
}
catch(e){
stack = e.stack || e.sourceURL || e.stacktrace;
}
var rExtractUri = /(?:http|https|file):\/\/.?\/.+?.js/;
var absPath = rExtractUri.exec(stack); // 获取URL地址。
return absPath ? absPath[0] : ''; // 如果找到了则返回,否则返回空字符串。
};
```
对于IE5.5~9,需要遍历文档中的script标签:
```javascript
var getCurrAbsPath = function(){
var scripts = document.scripts; // 获取所有的script标签。
for (var i = scripts.length - 1, script; script = scripts[i--];){ // 从后向前遍历所有script标签。
if (script.readyState === 'interactive'){ // 如果状态为执行中,说明是当前执行的脚本。
return script.src; // 返回当前脚本的绝对路径。
}
}
};
``` 需要注意的是,IE5.5~9版本的浏览器在处理script标签的加载状态上比较复杂。可以使用onreadystatechange事件来监听script元素状态的变化,但这需要考虑到loaded和complete状态可能出现的不确定性。为了避免这种情况,建议在动态添加script元素时先设置src属性后再将其添加到DOM树中。这样,loaded和complete状态只会出现其中一个(虽然每次请求时哪个出现是不确定的),相对比较好监测。IE和Firefox下还可以通过订阅window.onerror事件来获取当前脚本的绝对路径。事件处理函数将接受三个参数,分别是错误信息、错误发生的URL和错误编号。其中URL就是当前脚本的绝对路径。这就是IE和Firefox下的另一种获取当前脚本文件绝对路径的方式。以上就是获取当前脚本文件绝对路径的主要方法,希望对您的学习有所帮助。以上就是本文的全部内容。希望对您的学习有所帮助。如果对以上内容有任何疑问或需要进一步了解的地方,请随时与我们联系。同时请关注我们的其他文章以获取更多有关编程的知识和信息。如果您想进一步了解相关内容,请访问我们的官方网站或关注我们的社交媒体账号以获取更多信息。感谢您的阅读!接下来请访问我们的其他板块内容或返回首页继续浏览其他信息!接下来我们会进行更新操作哦!请点击任意地方退出编辑模式哦!请务必关注我们的更新内容哦!我们期待您的关注与参与!让我们一同分享编程的乐趣和知识吧!再次感谢您的阅读!如果有什么需要帮助的地方,随时与我们联系哦!祝您生活愉快!让我们继续更多的知识和技巧吧!相信我们可以共同分享更多有价值的内容和信息哦!期待您的参与!让我们一起学习进步吧!再见!以下是原文的结束部分:以上就是本文的全部内容,希望对大家的学习有所帮助。如果对以上内容有任何疑问或需要进一步了解的地方,请随时与我们联系。再次感谢大家的阅读和支持!再见!
编程语言
- JS获取当前脚本文件的绝对路径
- php防止伪造的数据从URL提交方法
- 深入剖析JavaScript编程中的对象概念
- jquery中live()方法和bind()方法区别分析
- js使用post 方式打开新窗口
- PHP异常类及异常处理操作实例详解
- PHP性能分析工具XHProf安装使用教程
- php设计模式之模板模式实例分析【星际争霸游戏
- JavaScript实现简单轮播图效果
- PHP使用pear实现mail发送功能 windows环境下配置pea
- MySQL下载安装详情图文教程
- 详解SQL中drop、delete和truncate的异同
- JS验证URL函数 正则
- javascript中Date format(js日期格式化)方法小结
- 浅析PHP原理之变量(Variables inside PHP)
- mongodb和php的用法详解