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

基本路径可以是以下示例中的任意一个:

http://www.example.com/
http://localhost/example
http://www.example.com/sub/example

例子也可能改变。


当前回答

这是一个简短的例子:

const base = new URL('/', location.href).href; console.log(基地);

其他回答

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

<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />

当我需要的值在JavaScript:

var baseurl = document.getElementById('baseurl').value;

不像使用纯JavaScript那样花哨,但很简单,可以完成工作。

更简单的答案在这里,window。location。href = window。location。origin;

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

我只是在同一个舞台上,这个解决方案对我来说很管用

在视图中

<?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

我不记得我把这个信息给信用,如果我找到它,我会编辑答案

这是一个非常古老的问题,但以下是我个人使用的方法……

获取标准/基础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 + "' />";