Javascript获取localhost + htdocs文件夹

时间:2013-04-15 06:13:33

标签: javascript jquery localhost hostname

我有跟随url构建,

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 个答案:

答案 0 :(得分:3)

window.location.pathname是您搜索的内容。

我建议你阅读window.location的MDN描述。与MDN中的其他所有内容一样,这也非常简单且内容丰富。

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

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

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

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


修改

看到你的新问题我可以说,只有当前的网址无法一致,安全地完成你想要的工作。

您需要http://localhost/myweb/部分,这是您的应用程序的URL根目录。在javascript中,您可以获得URL的协议和域。在您的实际站点上这两个匹配,但如果您的应用程序驻留在子文件夹(如本地主机的myweb文件夹)中,则会失败。

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

问题在于,仅通过检查URL,javascript无法分辨您的应用程序所在的位置。

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

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

Javascript可以通过斜杠(/)拆分您的网址,但它无法确定应该选择多少个子文件夹。例如,应用程序根目录上方的URL可以是以下任何一种:http://localhost/http://localhost/myweb/http://localhost/myweb/site1/http://localhost/myweb/site1/cart/

通过其他方法(我先建议),您可以删除URL的末尾(在您的情况下是cart/index.php部分)。这只有在您的URL结构非常严格时才有效,因此执行此脚本的所有页面都驻留在一个子文件夹中。

因此它将在以下网址上展开:http://localhost/myweb/site1/gallery/old/index.php或类似网址。

最佳选择是将其设置为单独文件中的“配置变量”,您可以在其部署的每个位置进行编辑。

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

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