Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.03.2015, 21:39
Аспирант
Отправить личное сообщение для Dark Surv Посмотреть профиль Найти все сообщения от Dark Surv
 
Регистрация: 16.03.2015
Сообщений: 43

обработка атрибута href
Всем привет!
Припустим есть такой html-файл:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" ></script>
  <script type="text/javascript">
        $(document).ready(function() {
            $('a').click(function() {
                var url = $(this).attr('href');
				alert (url);
				return false;
            });
        });
  </script>
<a href="http://test.tk/file.php">http://test.tk/file.php</a><br>
<a href="//test.tk/file.php">//test.tk/file.php</a><br>
<a href="/file.php">/file.php</a><br>
<a href="file.php">file.php</a>

Как сделать(а точнее обработать) чтобы каждый алерт выдал просто file.php
Ответить с цитированием
  #2 (permalink)  
Старый 28.03.2015, 22:55
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

Например, так:
$(document).ready(function() {
    $('a').click(function() {
        var url = /file.php/.exec( $(this).attr('href') );
        alert(url);
        return false;
    });
});
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2015, 04:58
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от Decode Посмотреть сообщение
Например, так:
$(document).ready(function() {
    $('a').click(function() {
        var url = /file.php/.exec( $(this).attr('href') );
        alert(url);
        return false;
    });
});
А в чем смысл такой регулярки? С таким же успехом можно в алерте просто строку 'file.php' выводить. Я думаю, что автору нужно получить название файла из пути. Проще всего разбить строку по слешам в массив:
$(document).ready(function() {
    $('a').click(function() {
        var url = $(this).attr('href'),
            arr = url.split('/'),
            fileName = arr[arr.length-1];
        alert(fileName);
        return false;
    });
});

Ну и если надо, то дополнительно проверять fileName на соответствие нужному шаблону.

Последний раз редактировалось jsnb, 29.03.2015 в 10:55.
Ответить с цитированием
  #4 (permalink)  
Старый 29.03.2015, 10:32
Аспирант
Отправить личное сообщение для Dark Surv Посмотреть профиль Найти все сообщения от Dark Surv
 
Регистрация: 16.03.2015
Сообщений: 43

Сообщение от jsnb
Я думаю, что автору нужно получить название файла из пути
я делаю хеш навигацию(это костыль для осла, основное изменение истории происходит history.pushState), и мне нужны адреса типа
http://test.tk/#/file.php
или
http://test.tk/file.php#/file.php

и я изменяю хеши так
$(document).ready(function() {
            $('a').click(function() {
                var url = $(this).attr('href');
		            window.location.hash = "/" + url;
                return false;
            });
        });

теперь поменяйте этот кусок javascript на кусок в первом примере

Последний раз редактировалось Dark Surv, 29.03.2015 в 10:44.
Ответить с цитированием
  #5 (permalink)  
Старый 29.03.2015, 10:39
Аспирант
Отправить личное сообщение для Dark Surv Посмотреть профиль Найти все сообщения от Dark Surv
 
Регистрация: 16.03.2015
Сообщений: 43

в это примере
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" ></script>
<script type="text/javascript">
        $(document).ready(function() {
            $('a').click(function() {
                var url = $(this).attr('href');
			    window.location.hash = "/" + url;
                return false;
            });
        });
  </script>

<a href="http://test.tk/file.php">http://test.tk/file.php</a><br>
<a href="//test.tk/file.php">//test.tk/file.php</a><br>
<a href="/file.php">/file.php</a><br>
<a href="file.php">file.php</a>

ссылки будут
http://test.tk/file.html#/http://test.tk/file.php
http://test.tk/file.html#///test.tk/file.php
http://test.tk/file.html#//file.php
http://test.tk/file.html#/file.php

а мне нужно что бы все были
http://test.tk/file.html#/file.php

вот как
проще было бы использовать HTML5 History API то Devote но я велосипедист

Последний раз редактировалось Dark Surv, 29.03.2015 в 10:42.
Ответить с цитированием
  #6 (permalink)  
Старый 29.03.2015, 10:50
Аспирант
Отправить личное сообщение для Dark Surv Посмотреть профиль Найти все сообщения от Dark Surv
 
Регистрация: 16.03.2015
Сообщений: 43

Сообщение от jsnb
arr = url.split('/'),
ошибка
Uncaught TypeError: Object [object Array] has no method 'split'

я тоже пробовал через split, что-то никак
Ответить с цитированием
  #7 (permalink)  
Старый 29.03.2015, 10:58
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Сообщение от Dark Surv
ошибка
Uncaught TypeError: Object [object Array] has no method 'split'
Я там исправил код в моем посте. Теперь должно работать.

Последний раз редактировалось jsnb, 29.03.2015 в 11:00.
Ответить с цитированием
  #8 (permalink)  
Старый 29.03.2015, 11:04
Аспирант
Отправить личное сообщение для Dark Surv Посмотреть профиль Найти все сообщения от Dark Surv
 
Регистрация: 16.03.2015
Сообщений: 43

Сообщение от jsnb
Теперь должно работать
спасибо большое, теперь можно как-то бороться с ослом =D
Ответить с цитированием
  #9 (permalink)  
Старый 29.03.2015, 13:09
Аспирант
Отправить личное сообщение для Dark Surv Посмотреть профиль Найти все сообщения от Dark Surv
 
Регистрация: 16.03.2015
Сообщений: 43

Общем я криво задал задачу и не полностью получил ответ
мне нужно не имя файла, а все что после первого слеша
http://test.tk/test/file.php = test/file.php или /test/file.php

а получается
http://test.tk/test/file.php = file.php

помогите мне еще раз пожалуйста
Ответить с цитированием
  #10 (permalink)  
Старый 29.03.2015, 13:35
Профессор
Отправить личное сообщение для jsnb Посмотреть профиль Найти все сообщения от jsnb
 
Регистрация: 15.03.2014
Сообщений: 561

Ну тогда используй pathname:
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">

</head>
<body>
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js" ></script>
<script type="text/javascript">
$(document).ready(function() {
  $('a').click(function() {
    alert(this.pathname);
    return false;
  });
});
</script>

<a href="http://test.tk/test/file.php">http://test.tk/test/file.php</a><br>
<a href="//test.tk/some/path/file.php">//test.tk/some/path/file.php</a><br>
<a href="test/file.php">test/file.php</a><br>
<a href="file.php">file.php</a>


</body>
</html>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить значение атрибута тега iframe? Dimaz Общие вопросы Javascript 5 15.12.2012 15:40
Поиск тега по значению его атрибута. frant32 Events/DOM/Window 12 03.06.2012 21:30
Изменение значения атрибута. tiros jQuery 0 05.05.2011 00:06
Не могу получить значение атрибута DenQ jQuery 9 06.02.2011 14:33
Кроссброузерно определить значение атрибута faunder Общие вопросы Javascript 5 21.02.2009 22:08