2012-03-01 9 views
1

ユーザーはURLを入力できるChrome拡張機能があります。ユーザが「http://」を逃してしまうことがあります。完全なURLがなければ、Chromeはそのリンクが内線内のローカルファイルであると見なすようです。JavaScriptの一般的なURL間違いの修正

現在、私の解決策はこれです -

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

これに対処するための良い方法はありますか?どのように私はURLの最も一般的な間違いを検出するでしょう。正規表現か他の何かが良いでしょうか?もちろん、無HTTPSのにもかかわらず、かなり良い音が、私はどちらかそれを解決するかどうかはわかりません

おかげ

+0

、私が最初に与えられたURLが有効なURLではないことを確認します別のスキーム、例えばftp。正規表現 '^ \ w {2,8}:/ 'のようなものは、2〜8文字の任意の単語の後にコロンとスラッシュなどが続くことを意味します。 –

答えて

0

おそらく、あなたはまた、リンクはあなたがこれを試すことができます

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(/.*:\/\//,''); 
関連する問題