【问题标题】:Opening each link in a each new window在每个新窗口中打开每个链接
【发布时间】:2015-12-21 17:33:53
【问题描述】:

我想知道如何在每个新窗口(不是标签)中打开每个链接。

我有大约 4 个链接,我使用了以下代码。

<a href="Images\Chapter1.pdf"
onclick="window.open(this.href, 'new window','width=1000,height=600'); return false;">

我有 4 个链接,上面的代码在某种程度上有效。

当我按下这 4 个链接中的任何一个时,一个新窗口将打开 pdf 文档,但是当我单击第二个链接时,打开的窗口将其内容更改为第二个 pdf,但我想要两个新的短带有内容的窗口,但不仅是一个新窗口更改其内容。

(Target="_Blank" 将在新选项卡中打开内容,而不是在新窗口中)。

让我知道如何解决这个问题。

【问题讨论】:

  • 可能是浏览器的原因。您是否也尝试过其他浏览器?据我所知,FF 具有强制新窗口进入新选项卡的设置。不知道其他浏览器有没有相同的设置。
  • 对不起,我没有在任何其他浏览器中尝试过。我正在使用 IE 11
  • 使用默认选项在任何地方都可以正常工作。即使在 IE11 中。 Myabe 使用不同的窗口名称?

标签: javascript html css


【解决方案1】:

试试这个(注意在 SO 的编辑器中不起作用) - 代码将为每个窗口提供一个新名称:

var wins = [];
window.onload = function() {
  var links = document.querySelectorAll(".pdfLink");
  for (var i = 0; i < links.length; i++) {
    links[i].onclick = function() {
      var idx = wins.length;
      wins[idx] = window.open(this.href, 'newwindow' + idx, 'width=1000,height=600');
      return false;
    }
  }
}
<a href="Images\Chapter1.pdf" class="pdfLink">PDF1</a>
<a href="Images\Chapter2.pdf" class="pdfLink">PDF2</a>
<a href="Images\Chapter3.pdf" class="pdfLink">PDF3</a>
<a href="Images\Chapter4.pdf" class="pdfLink">PDF4</a>

如果您想在有弹出窗口拦截器的情况下允许页面打开,请尝试以下操作:

var wins = [];
window.onload = function() {
  var links = document.querySelectorAll(".pdfLink");
  for (var i = 0; i < links.length; i++) {
    links[i].onclick = function() {
      var idx = wins.length;
      wins[idx] = window.open(this.href, 'newwindow' + idx, 'width=1000,height=600');
      return wins[idx]?false:true;
    }
  }
}
<a href="Images\Chapter1.pdf" class="pdfLink" target="_blank">PDF1</a>
<a href="Images\Chapter2.pdf" class="pdfLink" target="_blank">PDF2</a>
<a href="Images\Chapter3.pdf" class="pdfLink" target="_blank">PDF3</a>
<a href="Images\Chapter4.pdf" class="pdfLink" target="_blank">PDF4</a>

还要注意你可以写

    links[i].onclick = function(e) { 
      e.preventDefault();

并删除返回 false - 由于我们使用 querySelectorAll,因此在相同的浏览器中支持 preventDefault

【讨论】:

    【解决方案2】:

    您正在打开一个名为“新窗口”的新窗口。在第二次单击时,您指定相同的窗口。

    如果您在每次调用中使用新名称,它们应该在单独的窗口中打开。

    【讨论】:

    • 它工作了..我试图在同一个“新窗口”中打开它们,现在我将它们中的每一个重命名为“新窗口1”、“新窗口2”等等......谢谢!!
    猜你喜欢
    • 2013-04-01
    • 2017-06-11
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多