Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Как я понял так как картинка ещё не на странице, а в буфере - то браузер её и не грузит...

если через Image(), то грузит. но нужно проверять когда она загружена, так как выполнение скрипта при этом продолжается асинхронно.
например старинным способом - http://stackoverflow.com/questions/3511200/new-image-how-to-know-if-image-100-loaded-or-not
 
VVL99
и?

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 09:00 06-03-2017 | Исправлено: Mavrikii, 09:02 06-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Упомянутый выше autolink прекрасно работает с одной ссылкой. Как его заставить работать с текстом, содержащем ссылки?  
счас там код такой(ненужное убираю)

Код:
    var validUrlRegex = /^(https?|ftp):\/\/(-\.)?([^\s\/?\.#-]+\.?)+(\/[^\s]*)?[^\s\.,]$/ig,
        doubleQuoteRegex = /"/g;
 
data = data.replace( validUrlRegex , '<a href="' + data.replace( doubleQuoteRegex, '%22' ) + '">$&</a>' );
 

Где тут подправить, чтобы проверялся, что не весь буфер это одна ссылка, а буфер проверялся на ссылки и менялись там они?  

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 09:00 06-03-2017 | Исправлено: xerpal, 09:04 06-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
счас там код такой

тема для регулярок указана ранее.
заменить ^ на (^|\b) и аналогично $ на ($|\b)
там могут быть небольшие проблемы если ссылка на нескольких строчках с переносом

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 09:05 06-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
заменить ^ на (^|\b) и аналогично $ на ($|\b)

 
Тут у нас 4 "птички" ^  и два доллара $
Менять все что ли так?  
 

Цитата:
тема для регулярок указана ранее.

тут же именно яваскрипт специфика все таки
 

Цитата:
если через Image(), то грузит. но нужно проверять когда она загружена

ну так у нас плагин же к редактору - пока он не отработает, ничего не вставляет. В общем тут пока не важно, текст проверить вот на ссылки и картинки важнее...

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 09:09 06-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Менять все что ли так?  

а почему не попробовать сначала?
 

Цитата:
пока он не отработает, ничего не вставляет

картинка грузится сразу, как указан .src
но в зависимости от связи и размера - нужно какое то время.
будут доступны размеры, без отображения ее самой
https://jsfiddle.net/o2vusL03/
 

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 09:14 06-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
а почему не попробовать сначала?

заменил всё - не работает. 4 "птички" ^  и два доллара $
Включая доллар внизу...
вышло так  

Код:
    var validUrlRegex = /(^|\b)(https?|ftp):\/\/(-\.)?([(^|\b)\s\/?\.#-]+\.?)+(\/[(^|\b)\s]*)?[(^|\b)\s\.,]($|\b)/ig,
        doubleQuoteRegex = /"/g;
 
data = data.replace( validUrlRegex , '<a href="' + data.replace( doubleQuoteRegex, '%22' ) + '">($|\b)&</a>' );
 

Не работает...
 

Цитата:
картинка грузится сразу, как указан .src

Нет, не грузится в данном случае. Видимо какие то тонкости с ckEditor и буфером
 

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 09:23 06-03-2017 | Исправлено: xerpal, 18:48 06-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal
https://jsfiddle.net/c2qh0nmm/

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 19:40 06-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Спасибо. Только из-за лежания форума весь день пришлось такие сделать все через массив и сплит, притом думаю очень неэффективно и через одно место. Но работает и даже картинки зато вставляет когда надо, а когда надо ссылки.  
Вот так вышло

Код:
 
var validUrlRegex = /^(https?):(.*)\/(.*)\.(gif|jpg|png|jpeg)(.*)$/ig,
        doubleQuoteRegex = /"/g;
var validUrlRegex2 = /^(https?|ftp):\/\/(-\.)?([^\s\/?\.#-]+\.?)+(\/[^\s]*)?[^\s\.,]$/ig,
    doubleQuoteRegex2 = /"/g;
 
                 var data = evt.data.dataValue;      
 
                 var data_arr = data.split( "\n" ).join( " " ).split( " " );//split(/\s/);
                 var index, temp,data_str;
                 var new_arr = [];
                 var new_str = '';
                 for (index = 0; index < data_arr.length; ++index) {
                     data_str =data_arr[index];
                     data_str=data_str.replace(/\&nbsp;/g, '');
                     temp= data_str.replace( validUrlRegex , '<img src="' + data_str.replace( doubleQuoteRegex, '%22' ) + '" >' );
                     if ( temp == data_str ) {
                         temp= data_str.replace( validUrlRegex2 , '<a href="' + data_str.replace( doubleQuoteRegex2, '%22' ) + '">$&</a>' );
                     }
                     new_str +=' '+temp;      
                 }
 
evt.data.dataValue = new_str;
 

(Лишнее убрано). Все работает, хоть и некрасиво и не эффективно

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 21:51 06-03-2017 | Исправлено: xerpal, 21:53 06-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
притом думаю очень неэффективно и через одно место

https://jsfiddle.net/c2qh0nmm/1/
 
ps: indexOf не работает в IE ниже 9
и будет ошибочно работать с картинками, если в хэше или get аргументах будет что то с точкой.

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 22:02 06-03-2017 | Исправлено: Mavrikii, 22:23 06-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Картинки могут быть со всяким мусором после расширения. Если есть мусор ( image.jpg?rt=rr )- то не работает, заменяет на ссылку ((
 
 
Добавлено:
Opera presto почему то вообще глючит( притом изначально, не после последнего) - там у картинок она ссылку все равно в конец ставит...
НО это меньшее из зол - на ней не проверяется обычно...

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 22:21 06-03-2017 | Исправлено: xerpal, 22:33 06-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Если есть мусор ( image.jpg?rt=rr )- то не работает, заменяет на ссылку

потому что кусок определяющий расширение рассчитан на "чистые" файлы.
элементарно правится
https://jsfiddle.net/c2qh0nmm/2/
ps: и тут, если хочется, чтобы работало с расширениями с прописными буквами - нужно ext[1].toLowerCase()

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 22:46 06-03-2017 | Исправлено: Mavrikii, 22:50 06-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

Цитата:
элементарно правится

Не так уж и элементарно, учитывая  

Код:
 var ext = match.match(/\.([0-9a-z]+)(?:[\?#]|$)/i);

 
Спасибо, все вроде ок. )

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 23:09 06-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Не так уж и элементарно, учитывая  

все это элементарно, если понимать регулярки.
можно сделать и без них, но код будет длиннее и менее опрятный.

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 23:10 06-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Переносы убивают скрипт. Если копируемая строка в несколько строчек - то не работает...
PS Там проблема оказалась не в JS и не в регулярке - тег BR гадил...

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 09:43 07-03-2017 | Исправлено: xerpal, 10:08 07-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Переносы убивают скрипт


Цитата:
там могут быть небольшие проблемы если ссылка на нескольких строчках с переносом

заменить точку (не экранированную) на [\s\S]

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 09:48 07-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прикольно, если копировать из word и иже с ними - то ссылки остаются ссылками, в картинки не преобразуются. Видимо какие то заморочки с буфером в винде
 
Добавлено:

Код:
/(^|\b)(https?|ftp):\/\/(-\.)?([^\s\/?\.#-]+\.?)+(\/[^\s]*)?[^\s\.,]($|\b)/ig

 
Здесь же 4 точки и все экранированные....
Или же со слешем ведущим называются НЕэкранированные и все 4 менять?

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 10:15 07-03-2017 | Исправлено: xerpal, 10:23 07-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
xerpal

Цитата:
Здесь же 4 точки и все экранированные....  

ну не смотрел регулярку, написал как обычно )
в данном случае
Цитата:
^\s

внутри [] определяет "все, что не пробел, перенос и так далее"
нужно явно добавить, что то такого вида (не проверял)
/(^|\b)(https?|ftp):\/\/(-\.)?(([^\s\/?\.#-]|\r?\n)+\.?)+(\/([^\s]|\r?\n)*)?[^\s\.,]($|\b)/ig
 
и изучайте регулярки, ну что я, буду все писать?

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 10:31 07-03-2017 | Исправлено: Mavrikii, 10:33 07-03-2017
xerpal



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
Да я базовые основы знаю, просто их же несколько видов регулярок и черт ногу сломишь...
Спасибо ещё раз

Всего записей: 1654 | Зарегистр. 08-10-2011 | Отправлено: 10:36 07-03-2017
usrZorg

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Уважаемые гуру.
Прошу вашей помощи.
Помогите вытянуть наружу возврат функции:
(нижеприведенный код преобразовывает адреса в географические координаты)
код сабжа
Ссылка на jsfiddle.net
 

Всего записей: 38 | Зарегистр. 11-06-2010 | Отправлено: 21:30 23-03-2017
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usrZorg
выполнение функции после получения координат идет асинхронно, поэтому вернуть сразу (без задержки выполнения остального кода и подвисания браузера) не получится, так как запрос к гуглю и получение ответа занимают какое то время.
можно сделать, к примеру, так
https://jsfiddle.net/zpnh61b7/1/

Всего записей: 16416 | Зарегистр. 20-09-2014 | Отправлено: 21:39 23-03-2017 | Исправлено: Mavrikii, 21:40 23-03-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125

Компьютерный форум Ru.Board » Интернет » Web-программирование » вопросы по javascript


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru