在joomla php中,我可以使用$this->baseurl来获得基本路径,但我想在jquery中获得基本路径。
基本路径可以是以下示例中的任意一个:
http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
例子也可能改变。
在joomla php中,我可以使用$this->baseurl来获得基本路径,但我想在jquery中获得基本路径。
基本路径可以是以下示例中的任意一个:
http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
例子也可能改变。
当前回答
如果有人想把它分解成一个非常健壮的函数
function getBaseURL() {
var loc = window.location;
var baseURL = loc.protocol + "//" + loc.hostname;
if (typeof loc.port !== "undefined" && loc.port !== "") baseURL += ":" + loc.port;
// strip leading /
var pathname = loc.pathname;
if (pathname.length > 0 && pathname.substr(0,1) === "/") pathname = pathname.substr(1, pathname.length - 1);
var pathParts = pathname.split("/");
if (pathParts.length > 0) {
for (var i = 0; i < pathParts.length; i++) {
if (pathParts[i] !== "") baseURL += "/" + pathParts[i];
}
}
return baseURL;
}
其他回答
我认为这对你很有用:
var base_url = window.location.origin;
var host = window.location.host;
var pathArray = window.location.pathname.split( '/' );
我在几个Joomla项目中遇到过这种需求。我发现的最简单的方法是在模板中添加一个隐藏的输入字段:
<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
当我需要的值在JavaScript:
var baseurl = document.getElementById('baseurl').value;
不像使用纯JavaScript那样花哨,但很简单,可以完成工作。
var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
有同样的问题前一段时间,我的问题是,我只是需要基础url。这里有很多详细的选项,但要解决这个问题,只需使用窗口。位置的对象。实际上,在浏览器控制台中输入这个,然后按enter键选择你的选项。我的情况很简单:
window.location.origin
这是一个非常古老的问题,但以下是我个人使用的方法……
获取标准/基础URL
正如许多人已经指出的,这适用于大多数情况。
var url = window.location.origin;
获取绝对基础URL
但是,这种简单的方法可以用来去掉任何端口号。
var url = "http://" + location.host.split(":")[0];
编辑:为了解决Jason Rice提出的问题,可以使用以下方法自动插入正确的协议类型…
var url = window.location.protocol + "//" + location.host.split(":")[0];
设置基础URL
还有一个好处——基URL可以全局重新定义。
document.head.innerHTML = document.head.innerHTML + "<base href='" + url + "' />";