【问题标题】:window.open() simply adds the url to my current urlwindow.open() 只是将 url 添加到我当前的 url
【发布时间】:2014-06-15 22:35:57
【问题描述】:

当我使用 window.open("www.google.com", "_blank");

window.open("www.google.com", "_blank");

打开了一个新标签,但网址不是“www.google.com”,而是“=url-i-was-at=/www.google.com”。

这是一个sn-p的代码(也是唯一相关的代码)。 http://jsfiddle.net/FUYTY/

在 jsfiddle 中它的行为有点不同,但仍然不能正常工作。

我做错了什么?

【问题讨论】:

  • www.google.com 将是本地路径,例如指的是服务器上的同名目录。您需要链接到外部域而不是绝对 URL,例如 http://www.google.com/
  • 不知道为什么这被如此严重地否决。这是一个有明确解决方案的有效问题。

标签: javascript jquery


【解决方案1】:

您想访问服务器 www.google.com 的根文档,这是使用 url https://www.google.com/ 完成的。您改为提供了文档 www.google.com 的相对 URL。

请记住,window.open 接受相对网址和绝对网址,因此它不能假定您在地址栏中使用 www.google.com 时遗漏了 https://


也许举个例子会有所帮助。假设当前页面是http://www.example.com/dir/foo.html

  • window.open("popup.html", "_blank") 打开
    http://www.example.com/dir/popup.html
  • window.open("www.google.com", "_blank") 因此打开
    http://www.example.com/dir/www.google.com

当你说你想要http://www.example.com/dir/www.google.com时,浏览器无法知道你实际上想要https://www.google.com/,因为后者可能是有效的。

【讨论】:

  • 太好了,谢谢!为什么包含 http:// 会修复它? HTML/JS 或它寻找 http 的任何控件,如果没有找到它,它会将其解释为相对 url?
  • 也许举个例子会有所帮助。 window.open 接受相对和绝对 URL。如果您从http://www.example.com/dir/foo.html 调用window.open("popup.html", "_blank"),它将打开http://www.example.com/dir/popup.html。如果您从同一页面调用window.open("www.google.com", "_blank"),它将打开http://www.example.com/dir/www.google.com。当你说你想要http://www.example.com/dir/www.google.com时,浏览器无法知道你实际上想要http://www.google.com/
【解决方案2】:

您必须在您的网址中添加http://

$(document).ready(function () {
    $('#mybtn').on('click', function () {
        window.open("http://www.google.com", '_blank');
    });
});

修复:http://jsfiddle.net/FUYTY/4/

【讨论】:

    【解决方案3】:

    尝试预先添加 http://(参见 Fiddle http://jsfiddle.net/lkritchey/FUYTY/3/

    $( document ).ready(function() {
      $('#mybtn').on('click', function() {
          window.open("http://www.google.com", '_blank');   
      });
    });
    

    更多信息: 如果您事先包含“/”,它会将您的字符串附加到根 URL。如果您只是列出字符串,它会将其附加到当前的完整 URL。如果您包含 http:// 或 https://,它知道只使用您在字符串中输入的内容(即http://www.google.com

    【讨论】:

      【解决方案4】:

      在您的网址前加上http://

      【讨论】:

        猜你喜欢
        • 2011-11-20
        • 2012-01-23
        • 2015-01-27
        • 2019-01-20
        • 1970-01-01
        • 2015-02-21
        • 2014-10-03
        • 1970-01-01
        • 2015-11-23
        相关资源
        最近更新 更多