使用JavaScript在新窗口中打开URL

195

我正在制作一个“分享按钮”来分享当前页面。我想获取当前页面的URL并在新窗口中打开它。我已经解决了获取当前URL的部分,但好像无法让下一步起作用。

我正在苦恼于语法。我想指定新窗口的尺寸为width=520, height=570

类似于:

<a target="_blank"
   href="https://www.linkedin.com/cws/share?mini=true&amp;url=[sub]" 
   onclick="this.href = this.href.replace('[sub]',window.location)">
    LinkedIn
</a>

有什么想法吗?


可能是重复的问题:Javascript - 通过单击按钮在新标签页中打开特定URL - Luke Alderton
5个回答

309

使用window.open()

<a onclick="window.open(document.URL, '_blank', 'location=yes,height=570,width=520,scrollbars=yes,status=yes');">
  Share Page
</a>

这将创建一个名为分享页面的链接,该链接会在新窗口中打开当前URL,高度为570,宽度为520。


如何将窗口的高度和宽度设置为零,如果我将其设置为零,则会显示全屏。 - Akshatha S R
2
我们如何将它作为普通窗口而不是弹出窗口打开?因为无法打开新标签页。 - Ashok kumar Ganesan
@AkshathaSrinivas 最小高度为100。 - Oscar Acevedo
我可以向这些页面发送一些参数吗?另外,我如何在新窗口中使用它们? - rahim.nagori

85

只需使用 window.open() 函数?第三个参数可以让您指定窗口大小。

示例

var strWindowFeatures = "location=yes,height=570,width=520,scrollbars=yes,status=yes";
var URL = "https://www.linkedin.com/cws/share?mini=true&amp;url=" + location.href;
var win = window.open(URL, "_blank", strWindowFeatures);

shiplu.mokadd.im 似乎是我需要的,但我不确定它应该放在哪里。 - Mark Mitchell
2
如果您不关心编码标准,则可以将代码放入 onclick 属性中。稍微好一点的选项是创建一个函数,然后从 onclick 中调用它。使用 getElementByIdaddEventListener 更加清晰。使用 jQuery 获取更短的语法(以及其他一些特性+大量插件)也非常受欢迎。 - John Dvorak
第四个参数是怎么回事?它看起来对我来说是第三个。我有什么遗漏吗? - CoderDennis
@CoderDennis 很好的发现。已经修复了。 - Shiplu Mokaddim
你好,我该如何触发窗口关闭事件? - Dilakshan Sooriyanathan
@DilakshanSooriyanathan,您可以使用分配给新窗口的变量来关闭打开的窗口。上面的代码将使用win.close() - brad

15

如果您不提供任何 strWindowFeatures,则不要混淆,它将在新标签页中打开。

window.open('https://play.google.com/store/apps/details?id=com.drishya');

1
我不认为这是正确的。至少在我使用的Linux Chrome中,相同的window.open(url,'_blank')似乎会根据我点击时是否按住Shift或Control键来决定是打开新窗口还是新标签页。 - JohnK

6

我知道现在已经太晚了,但是,

在新标签页打开链接的步骤:

  1. 创建一个 a 元素
  2. 设置 href ("https://example.com")
  3. target 设置为 "_blank"
  4. 点击链接

代码:

<button onclick="myFunction()">Open</button>
<script>
function myFunction() {
  var link = document.createElement("a")
  link.href = "https://example.com"
  link.target = "_blank"
  link.click()
}
</script>

1
这可能是最好的答案。不会被弹出窗口拦截。 - Jannunen
1
非常漂亮,完美地运作。非常感谢您! - Nicholas Stommel
OP要求在新窗口中打开,而不是在新标签页中打开。 - undefined

1
以下是要在函数中使用的JavaScript代码: 注意,我使用1和0代替了“是”和“否”。
var theTop=((screen.height/2)-(theHeight/2))/2;
var theLeft=(screen.width/2)-(theWidth/2);
var features = 'height=600,width=800,top='+theTop+',left='+theLeft+',toolbar=1,Location=0,Directories=0,Status=0,menubar=1,Scrollbars=1,Resizable=1';

window.open(in_uri, WindowName, features);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接