Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как получить часть url return url (https://javascript.ru/forum/misc/41232-kak-poluchit-chast-url-return-url.html)

nanana 04.09.2013 23:02

как получить часть url return url
 
Привет всем!
Вопрос от человека далекого от javaScript.
у меня есть URL типа http://aaa.ru/?066
как мне получить только http://aaa.ru
(должен быть return )

:help:
заранее спасибо за помощь

BETEPAH 04.09.2013 23:40

Если урл берется из адресной строки, то проще всего через window.location.hostname
А если это переменная, то с помощью регулярного выражения. Вопросительный знак после слеша всегда идет?

nanana 04.09.2013 23:43

спасибо за ответ. да всегда, мне нужна функция с return. так можно сделать?

BETEPAH 04.09.2013 23:48

Цитата:

Сообщение от nanana
да всегда

тогда совсем просто:
function host(url) {
 return url.split('/?')[0]   
}
alert(host('http://aaa.ru/?066'));


P.S. а кто подскажет, как на форуме вставлять скрипт, который можно запускать?

nanana 04.09.2013 23:49

Спасибо огромное!!! только числа динамически меняются (забыл написать)

BETEPAH 04.09.2013 23:54

Цитата:

Сообщение от nanana
только числа динамически меняются (забыл написать)

Это не имеет значения для данного скрипта.
Функция "рубит" на куски строку, встречая последовательность "/?" и возвращает первый из получившихся кусков. Если последовательность не встретится, вернет всю строку нерубленной.

nanana 04.09.2013 23:54

спасибо

рони 05.09.2013 01:09

Цитата:

Сообщение от BETEPAH
P.S. а кто подскажет, как на форуме вставлять скрипт, который можно запускать?

run в тег [JS run] http://javascript.ru/formatting

ruslan_mart 05.09.2013 05:48

Цитата:

Сообщение от BETEPAH
return url.split('/?')[0]

А ведь слэша может и не быть. :)

BETEPAH 05.09.2013 08:20

Цитата:

Сообщение от Ruslan_xDD (Сообщение 270927)
А ведь слэша может и не быть. :)

В следующий раз будем запрашивать более подробное ТЗ с большим количеством вариантов строки ;)
Можно убрать из сплитера слеш, я думаю результат от этого не пострадает. А если отсутствие последнего слеша в возвращаемой строке критично, его не трудно удалить. Не хочется на ровном месте регулярки прикручивать ;)

BETEPAH 05.09.2013 08:22

Цитата:

Сообщение от рони (Сообщение 270920)
run в тег [JS run] http://javascript.ru/formatting

Я вернусь в эту тему, чтобы плюсануть, после того, как "добавлю отзыв кому-то еще"
:dance:

nanana 05.09.2013 12:09

Привет Всем! я не правильно поставил задачу
у меня есть url:

http://aaaa.ee.xxx.net/XX/HelloWeb3book.html?bor=BM92

должно получиться:

http://aaaa.ee.xxx.net/XX/HelloWeb3book.html

Спасибо

ruslan_mart 05.09.2013 12:20

var url = window.href.split('?')[0]; //Или window.location.href.replace(new RegExp(window.location.search), '');

history.pushState(null, null, url);

nanana 05.09.2013 12:27

Спасибо, а с return можно сделать?

BETEPAH 05.09.2013 12:35

Цитата:

Сообщение от nanana (Сообщение 270969)
Спасибо, а с return можно сделать?

уберите слеш из кавычек в коде четвертого поста этой ветки ;)
Интересно, для чего я разъяснял принцип работы...

ruslan_mart 05.09.2013 12:41

nanana, так Вам нужно просто вернуть ссылку как строку? Я думал Вам нужно в самой строке браузера поменять.

Тогда:
Цитата:

Сообщение от BETEPAH
уберите слеш из кавычек в коде четвертого поста этой ветки


nanana 05.09.2013 13:01

Цитата:

Сообщение от BETEPAH (Сообщение 270913)
тогда совсем просто:
function host(url) {
 return url.split('/?')[0]   
}
alert(host('http://aaa.ru/?066'));


P.S. а кто подскажет, как на форуме вставлять скрипт, который можно запускать?

а alert выдает же статическую страницу http://aaa.ru/?066 или я не прав?

ruslan_mart 05.09.2013 13:02

nanana, не прав.

nanana 05.09.2013 13:06

спасибо

rikitiki 20.04.2014 08:40

Очень надеюсь на вашу помощь!
Ковыряю в wordpress.
Хочу обрезать конец ссылки типа
_http://mysite.ru/wp-content/uploads/2014/04/hong_kong-2008-07-1024x768.jpg
до
_http://mysite.ru/wp-content/uploads/2014/04/hong_kong-2008-07.jpg
То есть чтобы ссылка вела не на копию загружаемого изображения, а на сам оригинал.
Немного поясню. Когда в wordpress загружаются большие изображения, то автоматически создаются их копии уменьшенных размеров, в конец названий адресов которых добавляются соответствующие разрешения. В зависимости от загружаемого изображения они могут быть переменной длины.
То есть из портретного оригинала 1944×2592px создастся large копия с адресом *-768x1024.jpg, а из альбомного с разрешением 2592×1944px large копия с адресом *-1024x768.jpg
Собственно сама проблема подробно изложена здесь и здесь.
Примеры тестовых галерей, в которых провожу опыты, по этой ссылке.
Сам плагин Auto ThickBox Plus, в thickbox.min.js которого вставил кнопку, находится по этому адресу.
Для решения задачи с кнопкой поступил примитивно - нашёл в thickbox.min.js код отвечающий за открытие картинки в новом окне и скопировал его там же перед кнопкой закрытия.
Сам код вот такой:
<a id='original' href='"+c+"' title='"+thickboxL10n.open+"'>Оригинал</a>

Хотя если из кода убрать "+c+", то тоже будет открывать.
Но сам код выводит вчистую загружаемую в лайгхтбокс картинку. То есть с добавкой в адрес "-1024x768.jpg". А хотелось чтобы ссылка вела на оригинал картинки, то есть чтобы адрес был без этой добавки.
Пробовал загружать в лайтбоксы оригиналы картинок. В плагине Responsive Gallery Grid такое можно сделать, Но тогда картинки ме-е-дленно загружаются и листаются в лайгхтбоксах.
Попытался ссылки на оригиналы в подписях вводить. Так их хрефы видны на всплывающих титлах миниатюр. На миниатюрах последней галереи это хорошо видно. Тоже плохо.
Помогите пожалуйста, а то меня эта проблема малость достала. Не перестаю о ней думать несколько дней. Может в код вместо "+c+" нужно какую-либо функцию подставить? Которая с помощью регулярных выражений или ещё как-нибудь там отсекала конец адреса?

jsnb 20.04.2014 09:32

rikitiki, замените c на что-нить вроде этого:
c.replace(c.match(/(-\d{1,4}x\d{1,4})\./)[1], '')

rikitiki 20.04.2014 10:43

С сомнением вставил вместо с c.replace(c.match(/(-\d{1,4}x\d{1,4})\./)[1], '') .... и... сработало!!!
Я от чуть с кресла не свалился от изумления!
Большое спасибо!!! Вот уж дествительно верный ник - Профессор.
Остаётся только добавить ещё кнопку. Одна пусть ведёт на загружаемую фотографию, а другая на оригинал. Такие кнопки будут полезны также на маленьких экранах мобильных устройств. На них лайгбоксы вид картинок портят. Да и скачать картину через лайгхтбокс нельзя.

rikitiki 20.04.2014 18:28

Эх..! Не бывает всё так гладко.
Столкнулся с неувязкой. Большие фотографии грузятся хорошо. А вот на маленьких оригиналах ThickBox зависает. Наверное wordpress не создаёт large копии, когда загружаются маленькие фотографии. Скрипт ищет-ищет large-приставку, а найти не может. Я так понимаю что replace переводится как замена. Но как он может заменить то чего нет.
Наверное replace меняет найденное регулярным выражением совпадение на пустоту. Я правильно понял? А если не находит, тогда что?
Когда курсор на миниатюру ставишь, то видно что ссылка ведёт на оригинальную фотку без приставки -768x1024.jpg Специально для последней галереи загрузил на сайт пару маленьких фотографий с котами с разрешением менее 600px:
http://santa.besaba.com/proverochnaya-zapis-4/
Как же это обойти? Помогите пожалуйста! :(


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