2016-05-05 4 views
0

Для моих модулей переднего плана я хочу иметь возможность загружать их непосредственно в режиме просмотра. Поэтому мне нужен мой базовый тег, чтобы узнать домашний каталог, но он этого не делает. Есть ли способ указать домашний каталог в пути.Как указать домашний каталог для базового тега?

Ниже не работает, так как тильда не интерпретируется.

<base href="~/root/web/source/" target="_blank"> 

Если я использую

<base href="/web/source/" target="_blank"> 

Он работает на сервере, а не на моего клиента, поскольку есть разные оценки для ведущих / (корень).

Аналогичные результаты для:

<base href="web/source/" target="_blank"> 

Как ни странно, сервер интерпретирует предшествующий косую черту такой же, как не слэш вперед предыдущего.

Клиент interprests относительный путь как:

/Users/a/root/web/source/htm 

В то время как сервер интерпретирует как относительный путь (директорию public_html)

/root 

, которые сильно отличаются.

+0

Вы пробовали '. /' Вместо '~ /'? точка означает текущий каталог, тильда обычно означает домашний каталог, но недействительна в браузере, в то время как точка действительна в браузере. –

ответ

0

Альтернатива использованию ./ в начале пути (который, как я объяснено буду интерпретировать относительный путь относительно текущего места, тогда как опуская точку будет интерпретировать путь относительно базового URL) будет использовать некоторый javascript для определения правильного пути на основе предоставленной подстроки:

// will set the <base> path automatically 
// as whatever path ""web/source/" is located in 
(function(relativePath){ 
    var baseElement = document.getElementsByTagName("base")[0]; 
    var url = ""+window.location; 
    var basepath = url.substr(0, url.indexOf(relativePath)); 
    baseElement.href = basepath+relativePath; 
})("web/source/"); 

Очевидно, что это необходимо для использования в тегах сценариев.

+0

Закончен с использованием JS - window.location.origin - и создается базовый тег в JS. –

Смежные вопросы