joomla php에서는 $this->baseurl
기본 경로를 얻는 데 사용할 수 있지만 jquery에서 기본 경로를 얻으려고했습니다.
기본 경로는 다음 예 중 하나 일 수 있습니다.
http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
는 example
또한 변경 될 수 있습니다.
joomla php에서는 $this->baseurl
기본 경로를 얻는 데 사용할 수 있지만 jquery에서 기본 경로를 얻으려고했습니다.
기본 경로는 다음 예 중 하나 일 수 있습니다.
http://www.example.com/
http://localhost/example
http://www.example.com/sub/example
는 example
또한 변경 될 수 있습니다.
답변:
이것은 당신을 도울 것입니다 ...
var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
http://localhost/myapp/what/ever/sub/folder
-> getBaseUrl-> http://localhost/myapp
:-)
192.168.0.23/~sites/site/html/
대신에 site.dev
. 사이트는 여러 개의 가상 하위 디렉토리를 가질 수 있으므로 Javascript로 전체 경로 이름을 얻는 것도 옵션이 아닙니다.
괜찮을 것 같아
var base_url = window.location.origin;
var host = window.location.host;
var pathArray = window.location.pathname.split( '/' );
window.location.origin
이것은 기본 URL을 얻을 것입니다
var baseurl = window.location.origin+window.location.pathname;
이것은 매우 오래된 질문이지만 개인적으로 사용하는 접근법은 다음과 같습니다.
많은 사람들이 이미 언급했듯이 이것은 대부분의 상황에서 작동합니다.
var url = window.location.origin;
그러나이 간단한 접근 방식을 사용하여 포트 번호를 제거 할 수 있습니다.
var url = "http://" + location.host.split(":")[0];
편집 : Jason Rice가 제기 한 문제를 해결하기 위해 다음을 사용하여 올바른 프로토콜 유형을 자동으로 삽입 할 수 있습니다 ...
var url = window.location.protocol + "//" + location.host.split(":")[0];
보너스로 기본 URL을 전체적으로 재정의 할 수 있습니다.
document.head.innerHTML = document.head.innerHTML + "<base href='" + url + "' />";
이것은 서버 측 속성이므로 Javascript에서는 불가능합니다. 클라이언트의 Javascript가 joomla가 설치된 위치를 알 수 없습니다. 가장 좋은 방법은 $this->baseurl
자바 스크립트 페이지에 값을 포함시킨 다음이 값 ( phpBaseUrl
) 을 사용하는 것 입니다.
그런 다음 다음과 같이 URL을 작성할 수 있습니다.
var loc = window.location;
var baseUrl = loc.protocol + "//" + loc.hostname + (loc.port? ":"+loc.port : "") + "/" + phpBaseUrl;
loc.host
같은 URL에 대한 포트를 가지고 http://localhost:8082/
이 방법을 생산할 예정은 http://localhost:8082:8082/
, window.location.hostname
대신 사용해야합니다.
document.baseURI
https://developer.mozilla.org/en-US/docs/Web/API/Node/baseURI<base/>
태그
의 값과 관련하여 기본 URL을 반환합니다.
var getUrl = window.location;
var baseurl = getUrl.origin; //or
var baseurl = getUrl.origin + '/' +getUrl.pathname.split('/')[1];
그러나 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]
$ this-> baseurl ()은 http : // localhost / CodeIgniter /를 반환합니다
여러 Joomla 프로젝트 에서이 필요성에 부딪 쳤습니다. 내가 찾은 가장 간단한 방법은 템플릿에 숨겨진 입력 필드를 추가하는 것입니다.
<input type="hidden" id="baseurl" name="baseurl" value="<?php echo $this->baseurl; ?>" />
JavaScript에서 가치가 필요할 때 :
var baseurl = document.getElementById('baseurl').value;
순수한 JavaScript를 사용하는 것만 큼 단순하지는 않지만 간단하고 작업을 완료합니다.
jQuery에서 기본 URL을 얻는 가장 쉬운 방법
window.location.origin
모든 사람이 개발시 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와 같은 참조를 사용해서는 안됩니다. 예 : Parent location cause http://localhost:8080/
not http://localhost:8080/some/path/
.
기본 URL없이 모든 하이퍼 링크를 전체 문장으로 참조하십시오.
형식은 호스트 이름 / 경로 이름 / 검색입니다
그래서 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
기본 URL이 <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
경우 파일 만 반환 file://
하지만 위의 정렬 솔루션은 완전한 올바른 경로를 반환합니다.
<base>
요소를 포함하는 @DaniilSamoylov의 답변을 참조하십시오 .
나는 같은 단계에 있었고이 솔루션은 나를 위해 일합니다.
보기에서
<?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
크레딧을 제공하기 위해이 정보를 어디에서 가져 가는지 기억이 안납니다. 찾으면 답변을 수정하겠습니다.
var getUrl = window.location;
var baseUrl = getUrl .protocol + "//" + getUrl.host + "/" + getUrl.pathname.split('/')[1];
다음은 file://
URL 에서도 작동하는 빠른 것입니다 .
나는이 하나의 라이너를 생각해 냈습니다.
[((1!=location.href.split(location.href.split("/").pop())[0].length?location.href.split(location.href.split("/").pop())[0]:(location.protocol,location.protocol+"//" + location.host+"/"))).replace(location.protocol+"//"+location.protocol+"//"+location.protocol+"://")]
누군가가 이것을 매우 강력한 기능으로 나눈 것을보고 싶다면
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;
}
쉬운
$('<img src=>')[0].src
비어있는 src-name으로 img를 생성하면 브라우저는 사용자가 있든 없든 기본 URL을 자체적으로 계산합니다 /index.html
.
이것을 헤더에 넣으면 필요할 때마다 사용할 수 있습니다.
var base_url = "<?php echo base_url();?>";
당신은 얻을 것이다 http://localhost:81/your-path-file
나 http://localhost/your-path-file
.