在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
例子也可能改变。
当前回答
我在几个Joomla项目中遇到过这种需求。我发现的最简单的方法是在模板中添加一个隐藏的输入字段:
<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
当我需要的值在JavaScript:
var baseurl = document.getElementById('baseurl').value;
不像使用纯JavaScript那样花哨,但很简单,可以完成工作。
其他回答
我在几个Joomla项目中遇到过这种需求。我发现的最简单的方法是在模板中添加一个隐藏的输入字段:
<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
当我需要的值在JavaScript:
var baseurl = document.getElementById('baseurl').value;
不像使用纯JavaScript那样花哨,但很简单,可以完成工作。
我很惊讶,如果在<base>标签中设置,那么没有答案考虑基url。当前的所有答案都试图获取主机名或服务器名或地址的第一部分。这是完整的逻辑,它也考虑了<base>标记(它可能指的是另一个域或协议):
function getBaseURL(){
var elem=document.getElementsByTagName("base")[0];
if (typeof(elem) != 'undefined' && elem != null){
return elem.href;
}
return window.location.origin;
}
Jquery格式:
function getBaseURL(){
if ($("base").length){
return $("base").attr("href");
}
return window.location.origin;
}
在不涉及上述逻辑的情况下,同时考虑<base>标记和window.location.origin的简写解决方案:
Js:
var a=document.createElement("a");
a.href=".";
var baseURL= a.href;
Jquery:
var baseURL= $('<a href=".">')[0].href
最后注意:对于您计算机中的本地文件(不是主机上的),window.location.origin只返回文件://,但上面的分类方法返回完整的正确路径。
var getUrl = window.location;
var baseurl = getUrl.origin; //or
var baseurl = getUrl.origin + '/' +getUrl.pathname.split('/')[1];
但你不能说CodeIgniter(或php joomla)的baseurl()将返回相同的值,因为可以更改这些框架的.htaccess文件中的baseurl。
例如:
如果你在本地主机上有一个。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]
$this->baseurl()将返回http://localhost/CodeIgniter/
我只是在同一个舞台上,这个解决方案对我来说很管用
在视图中
<?php
$document = JFactory::getDocument();
$document->addScriptDeclaration('var base = \''.JURI::base().'\'');
$document->addScript('components/com_name/js/filter.js');
?>
在js文件中,你将base作为一个变量访问,例如在你的场景中:
console.log(base) // will print
// http://www.example.com/
// http://localhost/example
// http://www.example.com/sub/example
我不记得我把这个信息给信用,如果我找到它,我会编辑答案
文档。baseURI返回的基本URL也与<base/>标签中的值有关 https://developer.mozilla.org/en-US/docs/Web/API/Node/baseURI