Можно же, если с привлечением 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('/')+'/'; } }) |
да это здорово, но понять гораздо сложнее что происходит.:) Но это вопрос практики/опыта
|
А что тут сложного. Вы для того чтобы узнать 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. |