代码之家  ›  专栏  ›  技术社区  ›  Thanu

获取localhost+htdocs文件夹的Java脚本

  •  1
  • Thanu  · 技术社区  · 11 年前

    我有以下网址要建立,

    http://localhost/myweb/cart/index.php
    

    我想得到 http://localhost/myweb/ 位动态构建。

    要在我的实时网站上做到这一点 http://www.myweb.com/cart/index.php 我可以使用以下JavaScript代码,

    var http = location.protocol;
    var slashes = http.concat("//");
    var host = slashes.concat(window.location.hostname);
    

    但是我该如何让我的开发环境发挥作用呢 http://localhost/myweb/ ? 如果我运行上面的代码,它会给我 http://localhost/ 只有

    有什么建议吗?

    1 回复  |  直到 11 年前
        1
  •  3
  •   vinczemarton    11 年前

    window.location.pathname 是你要搜索的东西。

    我建议您阅读MDN对 window.location 像MDN中的其他内容一样,这也是非常简单和信息丰富的。

    如果你知道URL的末尾有一个不必要的index.html部分,你可以:

    var path = window.location.pathname.split('/');
    path.pop();
    path.join('/');
    

    或者您可以将其切片(因为它通常更快):

    path.slice(0,path.lastIndexOf('/')+1)
    


    编辑 :

    看到你的新问题,我可以说,只有当前的URL无法始终如一地安全地完成你想要的。

    你需要 http://localhost/myweb/ 部分,它是应用程序的URL根。在javascript中,您可以获得url的协议和域。在您的实时站点上,这2个匹配,但如果您的应用程序位于子文件夹中(如 myweb 本地主机上的文件夹),这将失败。

    您需要的是以某种方式识别应用程序URL(应用程序的URL根)。

    问题是,javascript只检查URL,就无法判断应用程序所在的位置。

    假设您将站点部署到: http://localhost/myweb/site1/

    您将拥有以下URL: http://localhost/myweb/site1/cart/index.php

    Javascript可以通过斜线分割您的URL( / )但它无法知道应该选择多少个子文件夹。例如,从应用程序根目录上方的URL可以是以下任意一个: http://localhost/ , http://localhost/myweb/ , http://localhost/myweb/site1/ , http://localhost/myweb/site1/cart/ .

    通过另一种方法(我首先建议),您可以删除URL的末尾(在您的情况下 cart/index.php 部分)。只有当您的URL结构非常严格,所以执行此脚本的所有页面都位于一个子文件夹中时,这才会起作用。

    因此,它将在以下URL上中断: http://localhost/myweb/site1/gallery/old/index.php 或类似的。

    你的 最佳匹配 将其作为一个单独文件中的“配置变量”,您可以在部署到的每个位置对其进行编辑。

    作为PHP变量( $appRoot = "http://localhost/myweb/" )用它生成javascript。

    或者更简单地说是一个javascript变量( var appRoot = 'http://localhost/myweb/' ). 制作一个单独的js文件,称之为 config.js ,将上面的行添加到其中,并在其他java脚本之前引用它。