在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
例子也可能改变。
当前回答
这将得到base url
var baseurl = window.location.origin+window.location.pathname;
其他回答
格式为“hostname/pathname/search”
url是:
var url = window.location.hostname + window.location.pathname + window.location.hash
为了你的案子
window.location.hostname = "stackoverflow.com"
window.location.pathname ="/questions/25203124/how-to-get-base-url-with-jquery-or-javascript"
window.location.hash = ""
baseurl = hostname = window。location。hostname
这将得到base url
var baseurl = window.location.origin+window.location.pathname;
window.location.origin+"/"+window.location.pathname.split('/')[1]+"/"+page+"/"+page+"_list.jsp"
几乎和Jenish的答案一样,但更短一点。
如果有人想把它分解成一个非常健壮的函数
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;
}
我建议每个人在开发中创建HTML基础标签,然后动态分配href,所以在生产中,无论客户端使用什么主机,它都会自动适应它:
<html>
<title>Some page title</titile>
<script type="text/javascript">
var head = document.getElementsByTagName('head')[0];
var base = document.createElement("base");
base.href = window.document.location.origin;
head.appendChild(base);
</script>
</head>
...
因此,如果您在localhot:8080中,您将从基中访问每个链接或引用的文件,例如:http://localhost:8080/some/path/file.html 如果你在www.example.com,它将是http://www.example.com/some/path/file.html
还要注意的是,你所在的每个位置,你不应该在hrefs中使用像glob这样的引用,例如:父位置导致http://localhost:8080/而不是http://localhost:8080/some/path/。
假装你引用所有的超链接作为完整的句子没有bas url。