【问题标题】:Window.Open causing issue when URL doesnot contain http当 URL 不包含 http 时,Window.Open 会导致问题
【发布时间】:2012-03-15 18:41:00
【问题描述】:

我有一个文本框,用户可以在其中输入 URL 和名为检查链接的按钮。单击按钮时,应打开一个新窗口,其中包含用户输入的 URL。如果我输入 URL 作为“http://google.com”然后 window.open('http://google.com');工作正常,但如果我输入“www.google.com”,那么它会附加到当前窗口 url (http://localhost:1234www.google.com),这不是一个有效的 url。如何使这项工作?

提前致谢

【问题讨论】:

    标签: javascript window


    【解决方案1】:

    检查并添加

    if (!/^(http:|https:)/i.test(url))
       url = "http://" + url;
    

    【讨论】:

      【解决方案2】:

      试试这个:

      function f(url) {
          if (url.indexOf("http://") == -1) {
              url = "http://" + url;
          } 
          window.open(url);
      }
      

      【讨论】:

      • 感谢您的回复。我以这种方式解决了,但是通过使用regx来检查http是否存在。这样看起来很奇怪。只是尝试其他方式。我不明白是什么导致了这个问题?
      • 从我的角度来看,这是一个很好的选择,因为我们不会在不需要时在正则表达式上浪费资源。对于相同的结果,如果您与正则表达式相比,这具有较低的复杂性。
      【解决方案3】:

      如果您的问题是“我如何测试一个字符串是否以 'http://' 开头,如果不是前置?”然后是这样的:

      var url = "somestring.com"; // as set from your textbox
      if (0 != url.toLowerCase().indexOf("http"))
         url = "http://" + url;
      

      在进行此测试之前修剪前导和尾随空格是明智的,但我会将其留给读者作为练习...

      【讨论】:

        【解决方案4】:

        添加一个 onclick 按钮功能并处理其中的文本。

        function checkLink() {
            var url = document.getElementById("textbox-id").value;
           if(url.substr(0,7) != "http://") {
               alert("Invalid URL! Please make it like http://myurl.com");
            return false;
           }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-09-20
          • 2020-08-20
          • 1970-01-01
          • 1970-01-01
          • 2014-11-19
          • 1970-01-01
          相关资源
          最近更新 更多