栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

在浏览器中获取当前执行的脚本文件名的代码

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在浏览器中获取当前执行的脚本文件名的代码

背景
同事提了一个问题,如何在浏览器中动态插入的 Javascript 文件中,获取当前文件名?

除了服务器输出一个文件名外,在脚本中获取应该只有下面三种做法。

解法A
普遍的解法,只能用于页面静态scripts标签引入或者单个动态加载。
复制代码 代码如下:
var scripts = document.getElementsByTagName('script');
var filename = scripts[scripts.length -1].src;

动态插入多个脚本标签的情况:
复制代码 代码如下:
loadscript('b.js?param=1')
loadscript('a.js?param=2')
loadscript('b.js?param=3')
loadscript('a.js?param=4')



解法B
变态型,只能工作于FireFox:
复制代码 代码如下:
try {
throw new Error();
}
catch(exception){
console.log( exception.fileName );
}

解法C
我的解法,操作源代码:
复制代码 代码如下:
requirescript('a.js?'+Date.now(),function(text,src) {
console.log('text:',text);
globaleval('(function() { nvar __filename = "'+ src +'";n'+ text +'n;})();');
})

浏览器输出:
复制代码 代码如下:


优点:可靠、可缓存、可推迟执行、可扩展。
限制:1)变量命名被约定为“__filename”;2)同源策略。
又想到这个加载策略用来加载流行的 Coffeescript,比如:
复制代码 代码如下:
requirescript('script.coffee',function(text,src) {
if( isCoffeescript(src) )
globaleval( Coffeescript.compile(text) );
})

链接

Cross-Origin Resource Sharing

Passing Javascript arguments via the src attribute

Coffeescript

查看或下载

https://gist.github.com/1088730

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/114028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号