将' http:url'适用于所有浏览器和设备?

时间:2013-08-01 16:04:23

标签: javascript mobile browser web

在创建一个验证用户URL并在前面添加http:的函数时,我必须考虑www,https和//的情况作为有效网址。我现在编写的方式(见下文),我只提前http :,所以 // stackoverflow.com 的情况不会变成 http://// stackoverflow。 COM

这意味着像stackoverflow.com这样的网址会变成 http:stackoverflow.com

在Firefox和Chrome中,这很好用,但这些URL会从各种浏览器和设备中点击。 它是否会普遍起作用?对于//案例重写此检查很容易,但我对答案很感兴趣。

前置方法:

function prependHTTPtoWebURL() {
    var url = (el('org_website').value);
    var httpVar;
    var testFor;

    if (url) {// If there's a website URL value
        testFor = url.toLowerCase();
        if (testFor.indexOf("http") != 0){
            httpVar = 'http:'; //add it
            url = httpVar + url;
         el('org_website').value = url;
     }
    }
}

2 个答案:

答案 0 :(得分:3)

尝试使用正则表达式。例如,检查此代码:

var someurl = "www.google.com";
var otherurl = "google.com";
var anotherurl = "//google.com";

function prependHTTPtoWebURL(url) {
    var newurl = url.replace(/^(http)?(:)?(\/\/)?/i,'');
    return 'http://' + newurl;
}

console.log(prependHTTPtoWebURL(someurl));
console.log(prependHTTPtoWebURL(otherurl));
console.log(prependHTTPtoWebURL(anotherurl));

console.log中的输出将是:

http://www.google.com
http://google.com
http://google.com

由于您在第一个子域(www)上指定了子域(www),因此该域名受到尊重。它避免以四个对角线结束,例如http:////。如果您的网址类似:google.com,那么它也会正确修复。

你可以在这里看到它:http://jsfiddle.net/zRBUj/

编辑:添加提到的/i Kate。

答案 1 :(得分:0)

将http:更改为http://

有关详细信息,请参阅以下链接:

Anatomy of a URL

How the web works