2012-03-01 3 views
1

У меня есть расширение Chrome, которое позволяет пользователю вводить URL-адрес. Иногда пользователь пропускает «http: //». Без полного URL-адреса Chrome, похоже, предполагает, что ссылка является локальным файлом в расширении.Исправление общих ошибок URL-адреса в Javascript

В настоящее время мое решение это -

var http_temp = $(this).attr("href"); 
    if($.trim(http_temp).substr(0, 4)!="http"){ 
     $(this).attr("href", "http://"+$(this).attr("href")); 
    } 

Есть ли лучший способ справиться с этим? Как определить наиболее распространенные ошибки в URL-адресах. Будет ли регулярное выражение или что-то еще лучше?

Благодаря

+0

Лично я бы сначала проверить, что данный URL не является допустимым URL с использованием другой схемы, например FTP. Что-то вроде regexp '^ \ w {2,8}: /' означает любое слово из 2-8 символов, за которым следует двоеточие и косая черта или что-то подобное. –

ответ

0

Это звучит довольно хорошо, хотя, конечно, не по протоколу HTTPS, но я не знаю, как решить, что либо.

Может быть, вы могли бы также проверить, если ссылки существуют с

function UrlExists(myUrl) { 
    var http = new XMLHttpRequest(); 
    http.open('HEAD', myUrl, false); 
    http.send(); 
    return http.status != 404; 
} 
0

Вы можете попробовать это, он должен обнаружить большинство протоколов (не только HTTP):

if(!(/^\w{3,5}\:\/\//i.test(url))) { 
    url = 'http://'+url; 
} 

Есть, вероятно, более сложные протоколов, но это работает для наиболее распространенных.

Другой вариант, если вы предполагаете, что все пользователи вводят протокол http: как насчет распечатки протокола перед входом? Таким образом, пользователь знает, что протокол будет добавлен. Это общее удобство практика:

http://<input type="text"> 

Затем, если пользователь вводит протокол, это легко обнаружить и раздели:

url = 'http://'+url.replace(/.*:\/\//,''); 
Смежные вопросы