0

在一个页面上(我们称之为: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);

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

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

感谢您尝试提供帮助。

4

4 回答 4

1

您需要将其放入 onclick 事件中。您还需要添加return false;以阻止浏览器跟踪该链接。

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

jsFiddle它的工作。

这是另一种更清洁的方法

<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>

干净简单,它做的事情完全相同。

于 2013-07-23T18:46:05.403 回答
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>
于 2013-07-23T18:46:17.627 回答
0

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

这是实际的 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它就开始按预期/期望运行。

于 2016-02-24T15:56:08.077 回答
0

你应该尝试学习 JavaScript。它真的很强大,基本的东西并不难学。有一个名为 window 的 JavaScript 对象,它有一个名为 location 的属性(变量)。那是您页面的 URL,因此,window.open(..., location = 0, ...);您将要打开的页面的 URL 设置为http://the_page_you_are_calling_from_url/0. 所以......是的,你是对的,位置是问题所在。

如果您愿意,请查看Mozilla 窗口 API

于 2016-02-24T17:01:33.947 回答