JavaScript 获取 localhost+htdocs 文件夹

问题描述 投票:0回答:1

我有以下要构建的网址,

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/

有什么建议吗?

javascript jquery localhost hostname
1个回答
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)

 


编辑

看到你的新问题,我可以说,仅通过当前的 URL 无法一致且安全地完成你想要的事情。

您需要

http://localhost/myweb/
部分,它是应用程序的 URL 根。在 javascript 中,您可以获取 url 的协议和域。在您的实时站点上,这两个匹配,但如果您的应用程序驻留在子文件夹中(例如本地主机上的
myweb
文件夹),则此操作将会失败。

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

问题在于,仅通过检查 URL,JavaScript 无法判断您的应用程序所在的位置。

假设您将网站部署到:

http://localhost/myweb/site1/

您将拥有以下网址:

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
或类似的 URL。

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

作为 PHP 变量 (

$appRoot = "http://localhost/myweb/"
),您可以使用它生成 javascript。

或者更简单地说是一个 JavaScript 变量 (

var appRoot = 'http://localhost/myweb/'
)。创建一个单独的 js 文件,将其命名为
config.js
,将上面的行添加到其中并在其他 javascript 之前引用它。

© www.soinside.com 2019 - 2024. All rights reserved.