网站地图    收藏   

主页 > 前端 > javascript >

javascript文件中获取当前文件路径详解

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] javascript文件中并没有像PHP那样的__FILE__常量来供我们取得当前文件路径。研究了下,发现我们可以用下面几种方法来实现:...

1,在jQuery中获取当前JS文件路径

在jQuery中获取当前JS文件的路径比较简单,只需要如下一行代码就搞定。

var __FILE__ = $("script").last().attr("src");

注意,我们一般把这行代码放到文件的开头,让文件加载的时候就立即执行,这样页面中的script元素中,当前文件恰好是最后一个script。我们千万不要把这行代码放到

 代码如下 复制代码

$(document).ready();
$(function(){   });


中运行,因为如果放到这些语句中去的话,页面的DOM对象已经加载完毕,当前的script就不一定是最后一个script了,从而导致获取的路径不正确。

2,原生javascript获取当前JS文件路径

在原生的javascript中,要获取当前JS文件路径有两种方法。第一种其实思路和在jQuery中是一样的:

 代码如下 复制代码

var __FILE__, scripts = document.getElementsByTagName("script");
__FILE__ = scripts[scripts.length - 1].getAttribute("src");


第二种方法是利用浏览器的异常处理机制,但是这种方法不支持IE10以下版本的IE浏览器

 代码如下 复制代码

var __FILE__;
try {
    throw Error("获取JS路径有误");
}catch(ex){
    if(ex.fileName) //Firefox
        __FILE__ = ex.fileName;
    else if(ex.stack)//Chrome 或 IE10
        __FILE__ = (ex.stack.match(/ats+(.*?):d+:d+/)||['',''])[1];
    else if(ex.sourceURL)//Safari
        __FILE__ = ex.sourceURL;
}

在原生的javascript中获取当前文件路径的时候,建议使用第一种方法,兼容所有浏览器,第二种方法仅供参考

现在看一个完整的实例

 代码如下 复制代码

<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8" />
    <meta content="IE=8" http-equiv="X-UA-Compatible"/>

    <title>获取JS文件的路径 by 司徒正美</title>

    <meta http-equiv="content-type" content="text/html;charset=UTF-8" />
    <script src="/javascripts/dom-1.0.js?1270565974" type="text/javascript"></script>

  </head>
  <body>
    <div>获取JS文件的路径 by 司徒正美</div>


  </body>
</html>

下面是JS文件的内容,当然现在放出来的只针对本博文讨论的东西:

 代码如下 复制代码

dom = {};
dom.getBasePath = function(){
    var result = ""
    try{
        a = b
    }catch(e){
        if(e.fileName){//firefox
            result = e.fileName;
        }else if(e.sourceURL){//safari
            result =  e.sourceURL;
        }else if(e.stacktrace){//opera
            var m = e.stacktrace.match(/() ins+(.*?://S+)/m);
            if (m && m[1])
                result =  m[1]
        }
    }
    if(!result){//IE与chrome
        var scripts = document.getElementsByTagName("script");
        var  reg = /dom([.-]d)*.js(W|$)/i
        for(var i = 0 , n = scripts.length ; i <n ; i++){
            var src = !!document.querySelector ? scripts[i].src
                          :scripts[i].getAttribute("src",4);
            if(src && reg.test(src)){
                result = src
                break;
            }
        }
    }
    return result.substr( 0, result.lastIndexOf('/') + 1 );
}
alert(dom.getBasePath());// http://localhost:3000/javascripts/

补充一些相关的方法

//获取当前文件全路径

 代码如下 复制代码

<script language="javascript">

alert(window.location.href);

alert(window.location);

alert(location.href);

alert(parent.location.href);

alert(top.location.href);

alert(document.location.href);

alert(document.URL);

</script>

//获取当前目录方法

<script type="text/javascript">

//方法一

var str = location.href;

var arr = str.split("/");

delete arr[arr.length-1];

var dir = arr.join("/");

alert(dir);

 

获取相对路径的方法

 代码如下 复制代码

function getRelativePath()
{
var url = location.href;//当前url
var path = url.length - url.replace(///g,"").length - 4;

//层次为url包含/的长度-没有包含/的长度再减去项目头/的个数(如:http://hi.baidu.com/zdz8207/)
var str = "";
for(var i = 0; i < path; i++)
{
   str += "../";//组合成一个相对路径的字符串返回
}
return str;
}

 

//方法二

alert(location.href.substring(0,location.href.lastIndexOf('/')));

</script>

//获取当前文件名

<script   language=javascript>  

var  filename=location.href;

filename=filename.substr(filename.lastIndexOf('/')+1);  

alert(filename);  

</script>

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论