很多时候我们都需要在js文件中获取该文件的详细路径,以便根据其他文件与该js的相对位置计算并设置其他一些文件如图片或样式或脚本的目录路径。我们一般都这样做:
假设外部js文件的文件名为:test.js,则在test.js中都这样写:
var js=document.scripts;
var jsPath;
for(var i=0;i<js.length;i++){
if(js[i].src.indexOf("test.js")>-1){
jsPath=js[i].src.substring(0,js[i].src.lastIndexOf("/")+1);
}
}
alert(jsPath);
或者为了提高效率,这样写
var js=document.scripts;
var jsPath;
for(var i=js.length;i>0;i--){
if(js[i-1].src.indexOf("test.js")>-1){
jsPath=js[i-1].src.substring(0,js[i-1].src.lastIndexOf("/")+1);
}
}
alert(jsPath);
这种思路很清晰,根据文件名获取引用的文件的src属性并进行判断截取即可。
但这种办法有以下两个缺点:
1、需要遍历页面的js文件,有时可能效率会比较低。
2、如果页面中出现目录不同的重名的js文件则可能判断错误。
其实我们可以有更简单的办法来准确获取路径,这是在一次js测试突然发现并幡然醒悟的。
var js=document.scripts;
js=js[js.length-1].src.substring(0,js[js.length-1].src.lastIndexOf("/")+1);
alert(js);
直接使用js.length?这会正确吗?
其实仔细想想,由于判断路径的js代码一般都直接放在js文件中而不是函数中,所以当加载该js文件时会立即执行其中的语句,而执行此语句时所获取到的js文件数目正好是js.length-1,因为页面后面的js文件还没有加载,所以该处的js文件获取的数目并不是页面所有的js文件的数目。这样一来,获取路径就无需再遍历了,而且文件判断也无需文件名,判断更加准确(js.length-1永远都是其文件本身)。
分享到:
相关推荐
在进行 JSP 页面开发时,想要获取文件的路径,进行一些操作,常常会遇到由于 IE 安全性设置造成的不能正确读取文件路径的问题。下面将详细介绍该问题的解决方法。 问题描述 在 JSP 页面中,我们想要获取文件的路径...
然而,由于浏览器安全策略的限制,JavaScript直接获取本地文件系统路径的能力受到严格限制。本文将详细介绍如何在不同浏览器环境中通过JavaScript获取浏览器临时目录的方法。 #### 二、背景知识 1. **浏览器安全...
在实际应用中,获取文件路径后,我们可能需要对这些路径进行操作,比如检查文件是否存在、判断是否为目录、创建新路径等。同时,确保路径的安全性也很重要,避免路径遍历攻击,防止恶意用户通过构造特定路径访问到...
在Web环境中,由于安全限制,可能只能获取到文件的URL,而不是本地文件路径,需要通过FileReader API读取文件内容。 4. **权限与安全**:为了保护用户隐私,浏览器和其他应用程序通常会限制对文件系统的直接访问。...
如果确实需要获取文件的完整路径,一种可能的解决方案是利用`input`元素的`webkitdirectory`属性(非标准,只在某些浏览器支持),让用户选择一个目录而不是单个文件,然后获取目录路径。但这并不适用于所有浏览器,...
这里提到的"ajax jsp获取本地文件夹所有的路径"是一个示例,它展示了如何利用AJAX和JSP(JavaServer Pages)来获取并显示本地文件夹中的所有文件路径。这个案例对于实现文件管理器或类似功能非常有用。 首先,让...
以上代码片段展示了如何在四种常见的编程语言中获取指定目录及其子目录下的所有文件名和路径。在实际应用中,你可能需要根据具体需求进行调整,比如添加过滤条件、处理异常或优化性能。希望这些例子对初学者有所帮助...
在Node.js环境中,读取本地文件并生成目录树是一种常见的需求,特别是在开发文件管理系统或进行文件操作时。Node.js提供了一系列强大的文件系统(fs)模块,使得开发者能够方便地进行文件和目录的操作。本篇文章将...
标题“获取全路径代码”指的是在编程环境中,程序员可能需要获取一个文件或目录的完整路径。这在多种情况下是必要的,比如读取、写入、移动文件,或者执行某些依赖于特定路径的操作。全路径是从根目录开始到指定文件...
1. **使用FileReader API读取文件内容**:如果只需要处理文件内容,可以使用`FileReader`的`readAsDataURL`或`readAsText`方法来读取,而不是获取路径。 2. **利用File对象的name属性**:虽然不能获取完整路径,但...
这种方法依赖于一个事实:当用户在一个文本框内选中文本并复制时,IE浏览器允许读取这个被选中文本的范围,即使它包含的是一个文件路径。 下面,我们将详细解析提供的代码片段,并解释其工作原理: ```javascript ...
### JavaScript遍历文件夹下的所有文件与目录 在JavaScript中,遍历文件夹下的所有文件与目录是一项常见的任务,尤其是在需要处理本地文件系统时。本文将详细介绍如何使用`Scripting.FileSystemObject`对象来实现这...
要在Vue组件中读取本地JSON文件,首先将你的JSON文件放在`src/assets`目录下,假设你有一个名为`data.json`的文件,里面包含了你的数据。 在Vue组件中,你可以使用`axios`库来读取本地JSON文件。`axios`是一个基于...
由于浏览器的安全策略,JavaScript在浏览器环境中无法直接访问用户的文件系统,主要是为了防止恶意代码读取用户的数据。因此,我们不能像在桌面应用中那样直接打开文件夹并获取路径。但是,HTML5引入了一种名为File ...
本文将详细讲解如何从这样的输入元素获取文件路径,以及在Firefox开发中这一过程的变化。 首先,我们要了解`<input type="file">`元素的基本用法。这是一个HTML元素,用于创建一个文件选择器,用户可以通过它选取...
### JavaScript读取某目录...通过上述分析,我们可以看到虽然使用`ActiveXObject`可以实现在IE浏览器中读取文件目录的功能,但考虑到兼容性和安全性的问题,推荐在服务器端使用Node.js或其他后端语言进行文件系统操作。
`tempy`是一个轻量级的JavaScript库,它允许开发者快速、简洁地获取一个随机的、唯一的临时文件或目录路径,无需手动管理清理工作。这个库特别适用于那些不希望在系统中留下残留临时文件的项目。 首先,让我们详细...
在实际的数据处理场景中,输入文件路径可能会因时间、日期、环境等因素变化,需要动态获取而非硬编码。例如,每天的新日志文件、不同服务器上的数据源等。 3. **Kettle中的变量与参数**: Kettle支持使用变量和...
在JavaScript开发过程中,有时我们需要创建或访问系统的临时文件或目录,这时就涉及到获取系统临时目录的真实路径。"tempdir"正是这样一个工具,它允许开发者轻松地获取到操作系统默认的临时目录路径。本文将深入...