2012-02-09 5 views
6

У меня есть список URL-адресов, которые наши пользователи ввели для сайтов различных клиентов ... Я загружаю этот список с сервера в сетку для пользователей чтобы увидеть ... Я сделал URL-адреса кликабельными, обернув их HTML-тегом href ... проблема в том, что иногда пользователь вводит URL-адреса без http: // или www. префикс, поэтому браузер рассматривает их как относительные URL-адреса, которые никогда не случаются, потому что все эти веб-сайты предназначены для наших клиентов, и все они являются внешними. Есть ли способ заставить эти URL-адреса считаться абсолютными, а не относительными?URL-адрес гиперссылки HTML-силы, который должен рассматриваться как относительный (абсолютный)

Вот пример:

<a target='_blank' href='google.com'>google.com</a> 

Если вы попробуете это, вы увидите, что браузер будет считать, что это относительный путь, который не должен быть.

Благодаря


Решение:

Я решил проверить «//» (потому что я не знаю, что протокол - может быть HTTP или HTTPS), а если нет найдено, я предполагаю, что это http-сайт, и я префикс URL с этим - так короче, чтобы заставить браузер не обрабатывать гиперссылки как абсолютные

ответ

2

Почему бы вам не предварительно обработать вход и добавить http://, если это необходимо?

+0

Я мог бы ... но есть много вариантов обработки, много URL-адресов, а иногда они имеют www. иногда они не имеют и имеют другие поддомены и т. д. ... не так чисты, как вы думаете ... Я надеялся на более чистый способ: – Ayyoudy

+0

добавление просто http: // будет работать, это кажется чистым, как так как вы не ожидаете, что они будут переключать протоколы, такие как ftp и т. д. –

+0

, как я уже сказал, иногда у них уже есть http: //, поэтому мне все равно нужно будет точно проверить – Ayyoudy

0

Относительный URI.

Если вы хотите перейти на http://google.com/, тогда вам нужно будет установить ссылку.

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

Обратите внимание, что вы не можете смело предполагать, что должен быть www. www., поскольку использование этого для веб-сайтов - это просто конвенция и больше не следует строгому соблюдению.

0

Вы можете добавить // перед URL, и это должно сработать.