Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Имя файла из адреса


Автор: SeregaLBN 13.12.2005, 17:12
Всем привет.

Вот понадобилось...
Нужно чтобы ф-ция работала и когда в качестве URL выступает локальный файл.
Вот наваял:
Код

function GetFileNameFromURL() {
   var strURI = "";
   var iLenURL = window.location.pathname.length;
   for (var i=iLenURL-1; i>0; i--) {
      var ch = window.location.pathname.charAt(i);
      if (ch == '\\' || ch == '/') {
         strURI = window.location.pathname.substring(i+1, iLenURL);
         break;
      }
   }
   return strURI;
}


Для локального файла 'c:\2\MyPage\index.html ' получается:
- IE возвращает 'index.html'. Что и надо. (На тулбаре в адресе 'C:\2\MyPage\index.html')
- в Firefox'e возвращает не то что я ожидаю - 'INDEX~1.HTM'. (На тулбаре в адресе 'file:///c:/2/MyPage/INDEX~1.HTM')

Как её подправить?
Или у когото есть др. решение?

Автор: Ciber SLasH 13.12.2005, 17:44
Код
function GetFileNameFromURL() {
var fileName = location.pathname.split(/(\\|\/)/);
return fileName[fileName.length-1];
}

Автор: SeregaLBN 13.12.2005, 18:22
Спасибо, Ciber SLasH. Так короче.
Недружу я с регекспами :( - ещё неналовчился их ТАК писать. Запутался в этих косых!

Автор: Ciber SLasH 13.12.2005, 18:28
Всё просто:
рег находится между /..../
в скобках () идёт сравнение на бэкслэш \ (чтобы заискейпить, ставим два бэкслэша \\), или (знак чёрточка | ) на слэш / (чтобы заискейпить, ставим сначла бэкслэш, а потом слэш \/).

Автор: Zeroglif 13.12.2005, 20:14
Цитата(SeregaLBN @ 13.12.2005, 17:12)
Как её подправить?
Или у когото есть др. решение?

Не мучайся с pathname и оставь регекспам решать сложные задачи...

Код

s=window.location.href;
alert(s.slice(s.lastIndexOf('/')+1));


Автор: Ciber SLasH 13.12.2005, 22:45
Цитата(Zeroglif @ 13.12.2005, 20:14)
alert(s.slice(s.lastIndexOf('/')+1));

Ага, а вот и не везде сработает. smile
Т.к. IE например использует косую черту в обратном направлении (бэкслэш) на локальных файлах.

Автор: Zeroglif 14.12.2005, 00:16
Цитата(Ciber @ 13.12.2005, 22:45)
Ага, а вот и не везде сработает. 

Смайлик возвращаю ;) и предлагаю проверить... OK?

Автор: Ciber SLasH 14.12.2005, 00:30
Упс, точно, вот что значит поспешил ответить не проверив. Просто в строке адреса IE пишет бэкслэши, вот я и подумал...

Сори smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)