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

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

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

例子也可能改变。


当前回答

我建议每个人在开发中创建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。

其他回答

window.location.origin+"/"+window.location.pathname.split('/')[1]+"/"+page+"/"+page+"_list.jsp"

几乎和Jenish的答案一样,但更短一点。

有同样的问题前一段时间,我的问题是,我只是需要基础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 + "' />";

拆分并加入URL:

const s = 'http://free-proxy.cz/en/abc'
console.log(s.split('/').slice(0,3).join('/'))

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

在视图中

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

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