【问题标题】:Will 'http:url' work for all browsers and devices?'http:url' 是否适用于所有浏览器和设备?
【发布时间】:2013-08-02 16:10:23
【问题描述】:

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

这意味着像 stackoverflow.com 这样的 url 变成 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;
     }
    }
}

【问题讨论】:

  • 他们是否工作应该由你来测试。你是否应该那样做:h*%l 不。这不是编程问题,而是以下类别的问题:我不想修复我的代码并让它变得理智,这个糟糕的解决方案会起作用吗?
  • 我只会使用一个临时 A 标签来解析和强制任何和所有输入到一个有效的 url,而不是自己做所有的跑腿工作:x=document.createElement("a"); x.href=网址;警报(x.href);
  • @PeeHaa 我无法测试 'http:stackoverflow.com' 是否适用于我没有拥有的设备。你的评论没有提供信息,而且刻薄。谢天谢地,我从其他人那里得到了我想知道的东西。 “不知道,但不要那样做。”
  • @Kate 我们也不可能在所有设备上测试它,不是吗?

标签: javascript mobile browser web


【解决方案1】:

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

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),因此受到尊重。它避免以四个对角线结尾,例如http:////。如果您的网址类似于:google.com,它也会正确修复它。

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

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

【讨论】:

  • 虽然这并不能完全回答我的问题“'http:stackoverflow.com' 是否在任何地方都可以作为有效的 a href= 工作,但它是一个非常优雅的解决方案,我可能会使用它,因为我的问题的答案似乎是“不”。
  • 编辑:唯一的区别是我为正则表达式添加 /i 以使其不区分大小写。
  • 哦,是的,/i 很重要,我已经编辑了答案。此外,如果它有效,问题的答案是“否”,但它可以在某些用户代理上工作。不知道XD
【解决方案2】:

将 http: 更改为 http://

查看这些链接了解更多信息:

Anatomy of a URL

How the web works

【讨论】:

    猜你喜欢
    • 2012-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-05-02
    • 1970-01-01
    • 2010-11-04
    • 2015-05-15
    • 1970-01-01
    • 2023-03-13
    相关资源
    最近更新 更多