【问题标题】:Javascript paths relative to file相对于文件的 Javascript 路径
【发布时间】:2011-08-07 15:53:18
【问题描述】:

我编写了一个 Web 应用程序,其中 JS 文件有很多对其他文件的相对调用。到目前为止,这已经奏效,但现在我正在使用来自不同目录中页面的这个 js 文件,并且路径出现错误。这个网络应用程序将安装在许多不同的主机上,所以我不知道绝对路径是否可以工作,因为我不知道它安装在哪里。我也不想在我的路径中使用大量前置变量来破坏 js(但可能必须这样做)。

我希望 js 路径相对于 js 文件本身而不是打开它的文档...有没有办法在 js 文件中设置默认根目录?

$.ajax({
    type: "POST",
    url: "inc/alert.php",
    success: function(msg){
        if(msg){
            window.location.href = 'inc/logoff.php?timeout=true';
         }
    }
});

这是我的文件结构,但不知道会安装在哪里,也不知道webapp文件夹会叫什么:

/random-folder/web-app/inc/script.js

到目前为止,我所有使用 js 的文件都在“web-app”文件夹中......但现在我有其他页面在不同的文件夹中调用它,并且所有路径都已损坏。有没有办法做到这一点?或者至少有办法获取js文件本身的路径

提前感谢您的帮助...

【问题讨论】:

    标签: javascript path relative-path absolute-path


    【解决方案1】:

    不幸的是,这并不容易。

    但是,您可以尝试在 HTML 文档中查找 <script> 标记并解析其位置。与location.href 一起,您可以构建脚本的绝对 URL。


    但是,由于您正在调用 PHP 脚本(显然不属于 JS 文件夹),因此您的问题根本不应该是问题。您的 AJAX 调用将与包含脚本的文档相关,并且您可能知道该文档中 PHP 脚本的路径。

    更新:只需读取来自不同文件夹的文件正在使用这些脚本。在这种情况下,如果您不想简单地手动设置包含路径的 var,那么脚本标记解析技术实际上是可行的方法。

    【讨论】:

      【解决方案2】:

      您可以通过检查当前文档中<script>标签上的src属性找到该JS文件的路径。

      HTML:

      <script src="/some/random/path/main.js"></script>
      

      jQuery:

      var scriptFilename = 'main.js';
      var rootPath = ''; // Will contain the path to your file
      
      $('script').each(function() {
          var $script = $(this);
      
          if ($script.attr('src') && $script.attr('src').indexOf(scriptFilename) > -1) {
              rootPath = $script.attr('src').split(scriptFilename)[0];
      
              return false;
          }
      });
      

      【讨论】:

        【解决方案3】:

        无法获取绝对路径,原因有二:

        • JS 在客户端运行
        • JS 路径总是相对于:
          • HTML 页面(scripts.js in xyz.com/test/index.php => xyz.com/test/scripts.js
          • 服务器文档根目录(/scripts.js in xyz.com/test/index.php => xyz.com/scripts.js

        作为一种解决方案,您可能希望:

        • 要么从 PHP 加载你的 JS,例如:&lt;script type="text/javascript" src="scripts.php"&gt;&lt;/script&gt;
        • 或者,在加载脚本文件之前,加载与选项 1 相同的配置文件,例如: &lt;script type="text/javascript" src="config.php"&gt;&lt;/script&gt;&lt;script type="text/javascript" src="scripts.js"&gt;&lt;/script&gt;

        【讨论】:

          猜你喜欢
          • 2017-07-01
          • 2014-10-22
          • 1970-01-01
          • 1970-01-01
          • 2011-01-12
          • 2021-12-02
          • 1970-01-01
          • 2011-02-12
          相关资源
          最近更新 更多