Я создаю веб-сайт с CodeIgniter, у меня есть различные ресурсы, которые я загружаю с помощью 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="#" onclick="location.href='http://www.mysite.com/assets/css/themes/default.css'; return false;" 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");
он работает, но он не выглядит элегантным вообще, поэтому, я был бы признателен за любую помощь в том, как, возможно, создать этот базовый url из javascript или любого другого решения, спасибо:)
Я предпочел только решение Javascript, и поскольку я использую CodeIgniter, переменную document.base_url
с сегментами URL-адреса от protocol
до index.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('/') + '/';
}