Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Получить путь к выполняемому сценарию JS jQuery (https://javascript.ru/forum/misc/60882-poluchit-put-k-vypolnyaemomu-scenariyu-js-jquery.html)

laimas 25.01.2016 18:27

Можно же, если с привлечением JQ, и

$('script').each(function() {
    if(this.src && /pluiginname/i.test(this.src)) {
       var a = this.getAttribute('src').split('/'); //можно и полный url использовать this.src
       path = a.slice(0, a.length-1).join('/')+'/';   
    }
})

kosuha606 25.01.2016 18:38

да это здорово, но понять гораздо сложнее что происходит.:) Но это вопрос практики/опыта

laimas 25.01.2016 19:00

А что тут сложного. Вы для того чтобы узнать src скрипта тревожите JQ - $(scripts[i]).attr('src');, но это ведь можно получить и как this.getAttribute('src'), и сразу разбив его в массив. Если разбить по рег. выражению, одиночному слешу, то можно использовать непосредственно полный url, какая разница вам:

var a = this.src.split(/\/{1}/);


Найденные скрипты в теле страницы и не имеющие атрибута src вернут null, а значит сразу проверив истинность атрибута и есть ли в нем имя плагина, обработаем только нужный url, и да, надо после этого прервать цикл:

$('script').each(function() { //если использовать селектор 'script[src]', то проверку this.src из условия можно убрать 
    if(this.src && /pluigin_name/i.test(this.src)) {
       var a = this.src.split(/\/{1}/); 
       path = a.slice(0, a.length-1).join('/')+'/'; //соединили элементы массива, как его срез без последнего элемента, в строку через слеш
       return false;   
    }
})


флаг i в рег.выражении для "необязательной" прописи имени плагина с учетом регистра

Если вообще не дергать JQ для этой операции ($('script').each(function()...), то querySelectorAll().

PS. Не обязательно разбивать url в массив, можно взять только часть строки от начала до позиции последнего найденного слеша.

PPS. Ну еще "из непонятного", хотя это не так: :)

var path = document.querySelector("script[src*=pluigin_name]").src;
path = path.slice(0, path.lastIndexOf('/')+1)


Только в этом случае нужно учитывать регистр в имени каталога плагина


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