Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как определить директорию (URL) в которой лежит скрипт? (https://javascript.ru/forum/misc/7569-kak-opredelit-direktoriyu-url-v-kotorojj-lezhit-skript.html)

rkwdv 08.02.2010 14:41

Как определить директорию (URL) в которой лежит скрипт?
 
Существует ли возможность определить URL включаемого в html *.js файла изнутри этого файла? Необходимо для выцепливания картинок и других js файлов, лежащих там же.

subzey 09.02.2010 00:42

Теоретически, можно:
function getScriptDirectory(){
var scripts = document.getElementsByTagName("script"); // все элементы SCRIPT
var href = scripts[scripts.length - 1].src || location.href; // последний из списка. Если SRC нет, значит, внедренный, и берем адрес самой страницы
return href.replace(/[#\?].*/g, '').replace(/[^\/]*$/, '/'); // удаляем из URL query string и hash, после чего удаляем все после последнего слеша
}


Но я бы не стал сильно на это полагаться. Предположение «выполняется тот скрипт, который последний» может вполне оказаться неверным.

UPD: Опаньки, хайлайтер неправильно коммент распознал.

PeaceCoder 09.02.2010 02:17

var scripts = document.getElementsByTagName("script");

А уверенность в этой строке есть? Элемент script создается до парсинга/исполнения или же после исполнения?
Цитата:

Сообщение от subzey
UPD: Опаньки, хайлайтер неправильно коммент распознал.

Не коммент а регулярку.

subzey 09.02.2010 15:18

До парсинга последующих элементов. Иначе как по-вашему должен работать document.write?
<script></script>
<script>
alert(document.getElementsByTagName("script").length)
</script>
<script></script>


Проблема может быть (и, скорее всего, будет) с
document.body.insertBefore(myScriptNode, document.body.firstChild)


Цитата:

Сообщение от PeaceCoder
Не коммент а регулярку.

«Ошибочно распознал в символе #, входящем в регулярку, коммент» — пойдет? :)

PeaceCoder 09.02.2010 15:49

Цитата:

Сообщение от subzey
«Ошибочно распознал в символе #, входящем в регулярку, коммент» — пойдет?

Да. =) Просто когда вылавливаешь баги, необходимо точно указывать источник, а не то что ты видишь =)


Часовой пояс GMT +3, время: 08:13.