Javascript中使用A标签获取当前目录的绝对路径方法


Posted in Javascript onMarch 02, 2015

一谈到路径相关的问题,大家都会往window.location上想,确实这个对象提供了相当多的路径信息,其中常用的就包括:

1.location.href:当前页面的完整URL
2.location.pathname:当前URL中的路径名
3.location.hash:当前URL中的锚点
4.location.search:当前URL中的查询参数

然而,location没有一个属性能直接获得当前目录(不含文件名)的绝对路径。通过Google我发现了一些错误的方法,比如说把URL通过“/”分离成数组,把数组的最后一项去掉以后再连接成字符串。但如果URL中没有指定文件名,结果就大错特错了。

根据以往编码的经验,a元素的href属性总是会返回绝对路径,也就是说它具有把相对路径转成绝对路径的能力。使用下面的代码尝试了一下,果然成了:

var a = document.createElement('a');

a.href = './';

alert(a.href);

a = null;

很不幸地,此方法在老旧的IE 6/7下无效,当执行alert(a.href)时,弹出的仍然是“./”。后来,我发现在Stackoverflow上也有人提出了这个问题,而解决方法也是很简单的,只要把a通过innerHTML注入就可以了:
var div = document.createElement('div');

div.innerHTML = '<a href="./"></a>";

alert(div.firstChild.href);

div = null;

有人可能会问:为何不用正则表达式?我的答案是:要考虑有无文件名的情况、有无锚点的情况、有无查询参数的情况,这条正则表达式可能会挺复杂的。
Javascript 相关文章推荐
JavaScript 闭包在封装函数时的简单分析
Nov 28 Javascript
重载toString实现JS HashMap分析
Mar 13 Javascript
range 标准化之获取
Aug 28 Javascript
javascript代码运行不出来执行错误的可能情况整理
Oct 18 Javascript
js获得参数的getParameter使用示例
Feb 26 Javascript
javascript中Array()数组函数详解
Aug 23 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
Dec 14 Javascript
JS实现移动端实时监听输入框变化的实例代码
Apr 12 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
Vuex的初探与实战小结
Nov 26 Javascript
详解Vue-cli3.X使用px2rem遇到的问题
Aug 09 Javascript
JavaScript实现世界各地时间显示
Sep 07 Javascript
JavaScript日期类型的一些用法介绍
Mar 02 #Javascript
了解Javascript的模块化开发
Mar 02 #Javascript
JS实现的4种数字千位符格式化方法分享
Mar 02 #Javascript
js实现图片漂浮效果的方法
Mar 02 #Javascript
ECMAScript 5中的属性描述符详解
Mar 02 #Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
Mar 02 #Javascript
JavaScript数组常用方法
Mar 02 #Javascript
You might like
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
NodeJS制作爬虫全过程(续)
2014/12/22 NodeJs
AngularJs bootstrap搭载前台框架——准备工作
2016/09/01 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
Angular4的输入属性与输出属性实例详解
2017/11/29 Javascript
JavaScript读写二进制数据的方法详解
2018/09/09 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
JS控制只能输入数字并且最多允许小数点两位
2019/11/24 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
vue-cli —— 如何局部修改Element样式
2020/10/22 Javascript
[02:22]完美世界DOTA2联赛PWL S3 集锦第一期
2020/12/15 DOTA
python代码检查工具pylint 让你的python更规范
2012/09/05 Python
python操作日期和时间的方法
2014/03/11 Python
python条件变量之生产者与消费者操作实例分析
2017/03/22 Python
python中urllib.unquote乱码的原因与解决方法
2017/04/24 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python中模块的__all__属性详解
2017/10/26 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
Django实现跨域请求过程详解
2019/07/25 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
moosejaw旗下的户外商品促销网站:Mountain Steals
2017/02/27 全球购物
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
Ruby如何创建一个线程
2013/03/10 面试题
《天安门广场》教学反思
2014/04/23 职场文书
婚前协议书范本两则
2014/10/16 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
拾金不昧感谢信
2015/01/21 职场文书
预备党员考察表党小组意见
2015/06/01 职场文书
初中政治教师教学反思
2016/02/23 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
详解如何用Python实现感知器算法
2021/06/18 Python
深入理解CSS 中 transform matrix矩阵变换问题
2021/08/30 HTML / CSS
node快速搭建后台的实现步骤
2022/02/18 NodeJs