window.open将当前窗口发送到0

时间:2013-07-23 18:42:53

标签: javascript html window.open

在页面上(我们称之为: domain.com/subdirectory/page.html )我有这样的链接: <a href="javascript:window.open('someurl','_blank');">Link</a>

新窗口打开完美,但问题是,预先存在的窗口被重定向到 {domain.com} / {subdirectory} / 0 ,我无法弄清楚它为什么要添加0到子目录并尝试去那里。

我已经尝试将window.open移动到onclick并使href“void(0)”,甚至将其更改为带有onclick的跨度,但无论我尝试哪种选项,我都会得到相同的结果。我想要的只是弹出新窗口,而且你已经在的页面没有任何变化。

在IE9和Chrome中也会发生同样的事情。

我使用window.open而不是target =“_ blank”的原因是因为我还想从该窗口中删除菜单和其他内容以节省空间。

发现的答案
当我总结这个问题时,我简化了我的代码,使得任何人都无法回答(当然不是故意的)。我为此道歉。

这是实际的window.open命令(减去URL):window.open('[hidden url]'_blank',height='400px',width='450px',location=0,menubar=0,resizable=0,status=0,titlebar=0,toolbar=0);

问题是“location = 0”。当我在window.open上阅读教程时,如果我不想显示URL,它会将其设置为0。就个人而言,我并不在意,但我认为,信息显示的房地产越多越好。事实证明,“location”是一个URL而不是一个布尔属性。

一旦我删除了“location = 0”,它就开始按预期/期望运行。

感谢您尝试提供帮助。

4 个答案:

答案 0 :(得分:1)

您需要将其置于onclick事件中。您还需要添加return false;以阻止浏览器关注该链接。

<a href="#" onclick="window.open('someurl','_blank'); return false;">Link</a>

jsFiddle它的工作原理。

Here's another, slightly cleaner way to do it

<a id="link" href="#">Link</a>
<script type="text/javascript">
    var link = document.getElementById("link");

    link.onclick = function() {
        window.open('someurl','_blank');
        return false;
    }
</script>

我不知道你的情况,但这可能是理想的做法:

<a target="_blank" href="someurl">Link</a>

清洁简单,完全相同。

答案 1 :(得分:1)

使用onclick并从事件处理程序返回false:

<a href="#" onclick="window.open('someurl','_blank'); return false;">Link</a>

我还建议将您的Javascript与HTML分开。如果您只有一个链接,则可以执行以下操作:

<a id="linkid" href="someurl" target="_blank">Link</a>

然后在结束</body>代码之前和该链接代码之后的某个地方:

<script>
  document.getElementById('linkid').onclick = function(){
      window.open('someurl','_blank');
      return false;
  }
</script>

答案 2 :(得分:0)

当我总结问题时,我简化了我的代码,使得任何人都无法回答(当然不是故意的)。我为此道歉。

这里是实际的window.open命令(减去网址):window.open('[hidden url]'_blank',height='400px',width='450px',location=0,menubar=0,resizable=0,status=0,titlebar=0,toolbar=0);

问题是location=0。当我在window.open上阅读教程时,如果我不想显示该网址,则会将其设置为0。就个人而言,我并不关心,但我认为,信息显示的房地产越多越好。事实证明,location是一个URL,而不是一个布尔属性。

我删除了location=0后,它开始按预期/期望运行。

答案 3 :(得分:0)

你应该尝试学习JavaScript。它非常强大,基本的东西也很难学。 有一个名为window的JavaScript对象,其属性(变量)称为location。这是您网页的网址,因此,window.open(..., location = 0, ...);您要将要打开的网页的网址设为http://the_page_you_are_calling_from_url/0。 所以......是的,你的位置是正确的,这是正确的。

如果您愿意,请查看Mozilla window API