A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 支胜勇 中级黑马   /  2014-5-27 21:03  /  1874 人查看  /  4 人回复  /   2 人收藏 转载请遵从CC协议 禁止商业使用本文

jquery如何获取文件路径?求各位大神指点!

4 个回复

倒序浏览
在开发javascript插件的过程中,我们有时候需要获取当前JS文件的路径,用于自动加载一些图片、CSS等外部资源,但是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(/at\s+(.*?):\d+:\d+/)||['',''])[1];
        else if(ex.sourceURL)//Safari
            __FILE__ = ex.sourceURL;
    }

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

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 赞一个!

查看全部评分

回复 使用道具 举报
好乱啊1!
回复 使用道具 举报
还没学习到,参考一下..
回复 使用道具 举报
很感谢您的回答,但是我想要获取的是文件路径,如<input type="file" />。当我已经选择完文件的时候,要将选中的文件用form表单提交到后台,然后我想在后台获取该文件的完整路径,但是用HttpPostedFile类的对象的FileName属性只能获取文件名,却没有路径。比如C:\user\...\xxx.jpg FileName只获得xxx.jpg,但IE下可以获取完整路径,而百度、谷歌等浏览器只能获得xxx.jpg,我在网上sou了半天,他们都说这是浏览器出于安全考虑,把路径过滤了,但是如果我就想在后台获取他的完整路径,还有其他方法吗?
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马