IgorA100 90 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 Имеется JS (находящийся в папке бла-бла/qq/js/scr.js), в котором нужно определенному атрибуту задать путь (бла-бла/qq/css/default.css). К примеру строка выглядит так и все работает: $('#obj').attr('href', 'бла-бла/qq/css/default.css'); Но нужно не привязываться к пути "бла-бла", как-то так: $('#obj').attr('href', 'PATH+../css/default.css'); Голову уже сломал и перегуглил, но ничего хорошего не нашел Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 А если абсолютный путь прописать? Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 Автор А если абсолютный путь прописать? Фактически у меня сейчас и прописан абсолютный путь, но стоит какую-то папку переименовать или дать другому скрипт - нужно переписывать в нем пути, а это все криво . Цитата Ссылка на сообщение Поделиться на других сайтах
a1ex 60 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 {THEME} Цитата Ссылка на сообщение Поделиться на других сайтах
alex32 942 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 ../../css/default.css а так? Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 Автор {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'); Цитата Ссылка на сообщение Поделиться на других сайтах
lifestar 18 Опубликовано: 24 апреля 2013 Рассказать Опубликовано: 24 апреля 2013 (изменено) Можно сделать так В шаблоне: <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 Изменено 24 апреля 2013 пользователем Александр Медведев Цитата Ссылка на сообщение Поделиться на других сайтах
IgorA100 90 Опубликовано: 25 апреля 2013 Рассказать Опубликовано: 25 апреля 2013 Автор Можно даже ещё проще Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.