Перейти к публикации

В JS получить путь к папке на уровень выше ?


Рекомендованные сообщения

Имеется JS (находящийся в папке бла-бла/qq/js/scr.js), в котором нужно определенному атрибуту задать путь (бла-бла/qq/css/default.css). К примеру строка выглядит так и все работает:


$('#obj').attr('href', 'бла-бла/qq/css/default.css');

Но нужно не привязываться к пути "бла-бла", как-то так:

$('#obj').attr('href', 'PATH+../css/default.css');

Голову уже сломал и перегуглил, но ничего хорошего не нашел :(

Ссылка на сообщение
Поделиться на других сайтах

А если абсолютный путь прописать?

Фактически у меня сейчас и прописан абсолютный путь, но стоит какую-то папку переименовать или дать другому скрипт - нужно переписывать в нем пути, а это все криво :(.

Ссылка на сообщение
Поделиться на других сайтах

{THEME}

А в JS оно срабатывает???

../../css/default.css а так?

Не, не катит...

Нашел вот такое решение:


/**

*  return full path to the script

*

*  @param {String} sname script name

*  @return {String, Null} mixed string full path or null

*  @scope public

*/

function findPath (sname /* :String */) /* :String */{

  var h =document.getElementsByTagName('html')[0].innerHTML

	 ,sr=new RegExp('<scr'+'ipt[^>]+?src\\s*=\\s*["\']?([^>]+?/|)('+sname+')([^"\'\\s]*)[^>]*>(.|[\r\n])*?</scr'+'ipt>','i')

	 ,m =h.match(sr);

  if (m) {

	  if (!m[1]) m[1] = "";

	  /*

	  *  we've matched the full path

	  */

	  if (m[1].match(/^((https?|file)\:\/{2,}|\w:[\\])/)) return m[1];

	  /*

	  *  we've matched absolute path from the site root

	  */

	  if (m[1].indexOf("/")==0) return m[1];

	  b = document.getElementsByTagName('base');

	  if (b[0] && b[0].href) return b[0].href+m[1];

	  /*

	  *  return matching part of the document location and path to js file

	  */

	  return (document.location.href.replace(/[?#].+$/,'').match(/(.*[\/\\])/)[0]+m[1]).replace(/^\/+/,"");

  }

  return null;

}

В итоге получились вот такие строка:

$('#obj').attr('href', findPath('style.js')+'/../../css/skins/default.css');

Ссылка на сообщение
Поделиться на других сайтах

Можно сделать так

В шаблоне:


<script type="text/javascript" src="{THEME}/js/main.js" class="js"></script>

в main.js

var path = $('script.js').attr('src').replace('js/main.js', 'css/');

Но для DLE проще такой путь: в шаблон:

<script type="text/javascript">

var theme_path = '{THEME}';

</script>

у вот у вас глобальная переменная с адресом папки шаблона. Можно даже ещё проще - вызывать откуда угодно

var path = dle_root+'templates/'+dle_skin

Изменено пользователем Александр Медведев
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...