如何获取JavaScript的绝对路径?

时间:2019-04-10 12:59:31

标签: javascript

我正在尝试查找我的JavaScript文件的绝对路径(而不是URL)。与其对绝对路径进行硬编码,不如使用相对路径。例如:

/static/js/index.js
/static/config/1.json
/static/config/2.json

如果我可以获得index.js的绝对路径,那么仅../config/就无法访问两个json文件之一。

搜索SO和Internet时,我要么得到有关查找URL的建议,但是可以解决但不能解决我的问题。或对于文件路径,使用windows.location.pathname,但我尝试对其进行的任何排列都会返回空字符串或/

        var currentDirectory = window.location.pathname.split('/').slice(0, -1).join('/');
        console.log("Curr dir: " + currentDirectory);

(返回空字符串)

        var location = window.location.pathname;
        var directoryPath = location.substring(0, location.lastIndexOf("/")+1);
        console.log(" dirPath: " + directoryPath);

(返回/

我希望的是这样的

var absolute_path = window.function.absolute.path()

哪个会返回说:/u/user/develop/project/server/static/js/index.js 从中我可以:(再次提供伪代码)

var locations = absolute_path.split("js");
# location[0] = "/u/user/develop/project/server/static"
# location[1] = "js/index.js"
var config_file_locations = locations[0] + "config/";
var absolute_path_json1 = config_file_locations + "1.json"

-编辑-

好吧,看着window.location,它返回的URL非常清楚,这不是答案。

1 个答案:

答案 0 :(得分:0)

BlogModel 是绝对路径。您可以知道,因为它以class BlogModel(models.Model): BLOG_STATUS = ( ('PUBLISH', 'Publish'), ('DRAFT', 'Draft'), ) blog_id = models.AutoField(primary_key=True) user = models.ForeignKey( User, on_delete=models.CASCADE, related_name='blogs') title = models.CharField(max_length=255) content = models.TextField(blank=True, null=True) status = models.CharField(max_length=7, choices=BLOG_STATUS) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta(): db_table = 'blogs' verbose_name = 'Blog' verbose_name_plural = 'Blogs' def __str__(self): return self.title @property def files(self): #here is the property i added return 'do something' 开头,然后将其带回到网站的根目录。

浏览器无法自动告知网络服务器如何确定给定URL的内容的任何信息。

浏览器唯一知道的是它向服务器请求了 class BlogFilesSerializer(ModelSerializer): created_at = serializers.SerializerMethodField() updated_at = serializers.SerializerMethodField() class Meta: model = BlogFilesModel fields = ('blog_files_id', 'blog', 'path', 'created_at', 'updated_at') extra_kwargs = { 'path': { 'error_messages': { 'blank': 'File is required' }, } } class BlogSerializer(ModelSerializer): blog_files = serializers.SerializerMethodField() uploaded_files = serializers.FileField(required=True, source='files') blog_created_at = serializers.SerializerMethodField(read_only=False) class Meta: model = BlogModel fields = ('blog_id', 'user', 'title', 'content', 'status','blog_files', 'blog_created_at', 'uploaded_files', ) ,并且服务器响应了一些JavaScript。

服务器可能已读取静态文件,该文件可能位于名为/static/js/index.js的目录中,而该目录可能是名为/的子目录中的…那么服务器可能会获取整个URL,将其用于数据库查询中,然后从数据库中提取结果……或者它可能已将请求代理到另一洲另一台计算机上的另一台HTTP服务器。

如果您希望客户端JS了解HTTP服务器上文件系统的结构的任何信息,则需要以某种方式为其提供该信息。无法从浏览器获取它。