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
ページのJavaScriptに含めてから、この値を使用することです(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
<base/>
タグ
https://developer.mozilla.org/en-US/docs/Web/API/Node/baseURIの値も考慮してベースURLを返します
var getUrl = window.location;
var baseurl = getUrl.origin; //or
var baseurl = getUrl.origin + '/' +getUrl.pathname.split('/')[1];
ただし、これらのフレームワークの.htaccessファイルでbaseurlを変更することが可能なため、CodeIgniter(またはphp joomla)の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 /を返します
私はいくつかの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
また、あなたがいるすべての場所で、hrefのglobのような参照を使用しないでください。例:親の場所ではhttp://localhost:8080/
notが発生しhttp://localhost:8080/some/path/
ます。
すべてのハイパーリンクを、bas 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
<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
ます。