如何使用jquery或javascript获取基本URL?

Nav*_*yar 117 javascript jquery

在joomla php中我可以$this->baseurl用来获取基本路径,但我想在jquery中获取基本路径.

基本路径可以是以下任何示例:

http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
Run Code Online (Sandbox Code Playgroud)

example也可能改变.

小智 153

这个会帮你...

var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
Run Code Online (Sandbox Code Playgroud)

  • 这不会在所有情况下工作,通过某种方式undervoted答案指示由@Artjom B.例如,当一个网站在本地网络测试(与结构域置换成IP +本地路径)的基本URL可以是这样的`192.168.0.23 /〜网站/网站/ HTML /`,而不是`site.dev`.使用Javascript获取完整路径名也不是一个选项,因为站点可以包含任意数量的虚拟子目录. (3认同)

Har*_*ris 104

我觉得它对你没问题

var base_url = window.location.origin;

var host = window.location.host;

var pathArray = window.location.pathname.split( '/' );
Run Code Online (Sandbox Code Playgroud)

  • 好短而甜,谢谢.`window.location.origin` (7认同)
  • @jnoreiga 谁还在用ie9 ツ (3认同)
  • 这应该是首选答案,因为它简短、简洁并且效果很好。 (2认同)
  • 我希望就这么简单@AlexandreDaubricourt (2认同)

Zah*_*bar 26

这将获得基本网址

var baseurl = window.location.origin+window.location.pathname;
Run Code Online (Sandbox Code Playgroud)

  • 它不一样,pathname给你url的路径段,href也包含查询参数 (5认同)

小智 22

document.baseURI返回基本 URL 也尊重<base/>标签 https://developer.mozilla.org/en-US/docs/Web/API/Node/baseURI 中的值


Art*_* B. 13

这是javascript无法实现的,因为这是服务器端属性.客户端上的Javascript无法知道joomla的安装位置.最好的选择是以某种方式包含$this->baseurl页面javascript 的值,然后使用此值(phpBaseUrl).

然后,您可以像这样构建网址:

var loc = window.location;
var baseUrl = loc.protocol + "//" + loc.hostname + (loc.port? ":"+loc.port : "") + "/" + phpBaseUrl;
Run Code Online (Sandbox Code Playgroud)


Dus*_*ead 11

这是一个非常老的问题,但这是我个人使用的方法...

获取标准/基本URL

正如许多人已经指出的那样,这适用于大多数情况。

var url = window.location.origin;
Run Code Online (Sandbox Code Playgroud)


获取绝对基本URL

但是,此简单方法可用于剥离任何端口号。

var url = "http://" + location.host.split(":")[0];
Run Code Online (Sandbox Code Playgroud)


设置基本URL

另外,基本URL可以在全局范围内重新定义。

document.head.innerHTML = document.head.innerHTML + "<base href='" + url + "' />";
Run Code Online (Sandbox Code Playgroud)


AKH*_*MAR 7

var getUrl = window.location;
var baseurl = getUrl.origin; //or
var baseurl =  getUrl.origin + '/' +getUrl.pathname.split('/')[1]; 
Run Code Online (Sandbox Code Playgroud)

但是你不能说CodeIgniter(或php joomla)的baseurl()将返回相同的值,因为它可以更改这些框架的.htaccess文件中的baseurl.

例如 :

如果你在localhost中有这样的.htaccess文件:

RewriteEngine on
RewriteBase /CodeIgniter/
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

$ this-> baseurl()将返回http:// localhost/CodeIgniter /


Joh*_*hhn 6

前段时间有同样的问题,我的问题是,我只需要基本URL。这里有很多详细的选项,但是要解决这个问题,只需使用window.location对象。实际上是在浏览器控制台中键入此内容,然后按Enter键以在那里选择您的选项。对我来说,这很简单:

window.location.origin
Run Code Online (Sandbox Code Playgroud)


Qai*_*lik 6

在jQuery中获取基本URL的最简单方法

window.location.origin
Run Code Online (Sandbox Code Playgroud)


Bri*_*lli 5

我在几个Joomla项目中遇到了这种需求.我发现解决的最简单方法是在模板中添加一个隐藏的输入字段:

<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
Run Code Online (Sandbox Code Playgroud)

当我需要JavaScript中的值时:

var baseurl = document.getElementById('baseurl').value;
Run Code Online (Sandbox Code Playgroud)

不像使用纯JavaScript那样花哨,但很简单并完成工作.


小智 5

您可以通过以下方式轻松获取:

var currentUrl = window.location.href;
Run Code Online (Sandbox Code Playgroud)

或者,如果您想要原始 URL,请使用:

var originalUrl = window.location.origin;
Run Code Online (Sandbox Code Playgroud)

  • 有什么不同? (2认同)