どのようにjavascriptのベースURLを取得する


3 Answers

1つの方法は、スクリプトタグを使用して、ビューに必要な変数をインポートすることです。

<script type="text/javascript">
window.base_url = <?php echo json_encode(base_url()); ?>;
</script>

ここでは、json_encodeでbase_urlをラップして、有効なJavascriptに自動的にエスケープするようにしました。 私はbase_urlをグローバルウィンドウに配置しています。base_urlを呼び出すだけでどこでも使用できますが、それを呼び出すJavascriptの上にスクリプトタグを置いてください。 あなたの与えられた例で:

...
$('#style_color').attr("href", base_url + "assets/css/themes/" + color_ + ".css");
Question

私はCodeIgniterでWebサイトを構築しています。このようなbase_urlヘルパー関数を使用して読み込むさまざまなリソースがあります

<link rel="stylesheet" type="text/css" href="'.base_url('assets/css/themes/default.css').'" id="style_color"/>

それは(つまり、www.mysite.com)

<link rel="stylesheet" type="text/css" href="http://www.mysite.com/assets/css/themes/default.css" id="style_color"/>

私はこのように、このリソースを別のjavascriptで交換することができます

$('#style_color').attr("href", "assets/css/themes/" + color_ + ".css");

何が起こるかは、PHPが生成した絶対パスを使わずにリソースを読み込もうとしているので、私の解決策ではこのようなPHPの各ページにダミーのタグを追加していました

<div id="base_url" class="'.base_url().'"></div>

私はその後、javascriptの行を

$('#style_color').attr("href", $('#base_url').attr("class") + "assets/css/themes/" + color_ + ".css");

それは動作しますが、それはすべてではありませんので、私はおそらくjavascriptまたは他のソリューション、感謝の中からこのベースURLを生成する方法についての任意のヘルプに感謝します:)

私はJavascriptの唯一のソリューションを好みました。私はCodeIgniterを使用していdocument.base_urlので、 document.base_url変数をURLからprotocolindex.phpと便利です

document.base_url = base_url('index.php');

関数base_url()

function base_url(segment){
   // get the segments
   pathArray = window.location.pathname.split( '/' );
   // find where the segment is located
   indexOfSegment = pathArray.indexOf(segment);
   // make base_url be the origin plus the path to the segment
   return window.location.origin + pathArray.slice(0,indexOfSegment).join('/') + '/';
}



base_urlcodeigniterとまったく同じものを得るには、次のようにします:

var base_url = window.location.origin + '/' + window.location.pathname.split ('/') [1] + '/';

あなたが純粋なJavascriptファイルで作業する場合、これはより役に立ちます。




JavaScriptのベースURL

JavaScriptでベースURLを取得するプロジェクトの簡単な関数です

// base url
function base_url() {
    var pathparts = location.pathname.split('/');
    if (location.host == 'localhost') {
        var url = location.origin+'/'+pathparts[1].trim('/')+'/'; // http://localhost/myproject/
    }else{
        var url = location.origin; // http://.com
    }
    return url;
}



var baseTags = document.getElementsByTagName("base");
var basePath = baseTags.length ? 
    baseTags[ 0 ].href.substr( location.origin.length, 999 ) : 
    "";





Related