获取当前Javascript脚本文件的路径

原创 2015年05月22日 14:49:49

获取当前Javascript脚本文件的路径

获取当前Javascript脚本文件的路径,在特定场景下可能需要,比如写模块加载器,或者进行日志记录。并没有统一的方法适用于所有浏览器,本文分几种情况进行说明。

(1). 标准做法: document.currentScript 对象的src属性
适用于Firefox 4+, Chrome 29+, Opera 16+, Safari 8+.

var src = document.currentScript.src;

(2). 从Error对象的stack属性中提取文件路径
适用于IE10+, Safari 7-, Opera 15-.

var e = new Error('err');
var stack = e.stack || e.sourceURL || e.stacktrace || '';
var rgx = /(?:http|https|file):\/\/.*?\/.+?.js/, 
var src = (rgx.exec(stack)||[])[0] || '';

如果浏览器不支持Error构造函数,也可以通过try…catch来获取一个Error对象。

监听onerror事件,来对Error对象处理,原理也是如此。onerror事件的回调函数的第2个参数就是src. 代码就不贴了。

(3). 找document.scripts集合中的最后一个script元素的src
适用于脚本加载过程中执行的情况,不适用于脚本初始化完成后的调用。对浏览器没有要求。

var src = document.scripts[document.scripts.length - 1].src;

(4).查找document.scripts集合中readyState属性为interative的script元素的src
适用于IE9-. IE9以下浏览器中,script.readyState属性为interative表示脚本正在执行。

var scripts = document.scripts, src;
for (var i = scripts.length - 1; i>=0; i--){
    if (scripts[i].readyState === 'interative'){
        src = scripts[i].src;
        break;
    }
}

本文只是提供思路分析,如果需要在产品中使用,需要处理各种适用情形的判断。有人制作了一个JS函数(getCurrAbsPath.js)来处理。

关于获取正在运行的script标签兼容问题

**关于获取正在运行的script标签兼容问题**关于这个问题我查过资料,有一篇博客写的一个兼容特别全,用的是强制报错兼容浏览器,但是它只能获取到正在运行的script标签的路径。这个地址是大神写的好...
  • ZXGuang521
  • ZXGuang521
  • 2017年01月22日 15:32
  • 1089

Javascript 获取当前JS文件路径

1.原生Javascript获取当前JS文件路径 var file, scripts = document.getElementsByTagName("script"); file = script...
  • zsg88
  • zsg88
  • 2017年03月31日 09:09
  • 2107

Javaweb项目引入js文件路径的三种方式

1、直接引用: 根据项目的目录结构。我的项目目录结构如图: 引用方式为: 2、通过EL表达式引入:...
  • sy793314598
  • sy793314598
  • 2017年08月07日 19:36
  • 2223

引用外部.css或.js文件的路径问题--jsp或html页面引用

jsp或html页面引用外部.css或.js文件时,注意路劲问题,如果设置不当,会引用不到这些外部的文件 假设使用下面的目录结构: -webapp  |-MyProject  目...
  • zzy7075
  • zzy7075
  • 2016年01月04日 16:46
  • 7204

js文件中获取项目访问路径

有的时候需要在js文件中获取项目的路径,这时候就需要使用jquery获取路径的方法: jquery方法中调用 getRootPath()+"static/html/projecthelp....
  • maizang52
  • maizang52
  • 2016年10月22日 10:25
  • 2580

nodejs取得当前执行路径

process.cwd() 当前执行程序的路径(执行命令行时候的路径,不是代码路径 例如 在根目录下执行 node ./xxx/xxx/a.js 则 cwd 返回的是 根目录地址 )...
  • ISaiSai
  • ISaiSai
  • 2016年12月03日 10:09
  • 12087

shell 中获取文件真实路径(绝对路径)

shell 脚本中,通常会使用相对路径来做处理,但有时候,我们也许需要用到绝对路径。 在shell怎么获取一个文件或目录的绝对路径呢? 也许你会立马想到realpath(如果你写过php的话),那么s...
  • LGD_2008
  • LGD_2008
  • 2016年11月25日 20:04
  • 16141

js获取被选择文件的路径方法汇总

js获取被选择文件的路径方法汇总
  • xiayujj123
  • xiayujj123
  • 2016年06月03日 11:02
  • 11454

js文件的引用路径 绝对路径的写法

  • lifan5
  • lifan5
  • 2014年04月21日 09:09
  • 17050

客户端和服务器端路径问题及资源的获取

路径 1 与路径相关的操作 ----------------------------------------------------     超链接     表单     转发    ...
  • u013033038
  • u013033038
  • 2015年04月24日 08:47
  • 3241
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:获取当前Javascript脚本文件的路径
举报原因:
原因补充:

(最多只允许输入30个字)