使用window.open打开多个URL

6

我对JavaScript还比较陌生,所以对于初学者的问题向大家道个歉。基本上,我在使用window.open()方法时遇到了一些问题。

我的代码主要是获取用户输入的字符串,然后添加几种不同的变体,对这些变体进行搜索,并且应该会打开每个结果的新窗口。但是,似乎在我的第一个window.open语句之后,代码停止执行了。以下是我的工作内容:

var searchStrings = new Array(url1, url2, url3);

var arrayLength = searchStrings.length;
for (var i = 0; i<arrayLength; i++) {
    window.open(searchStrings[i]);
}

我已经测试了循环,除了window.open之外的代码,以确保它正确地迭代数组,并且我将i设置为比0更高的值,以测试打开数组中的第二个或第三个项目。
看起来window.open只能使用一次,或者我做错了什么?

3
浏览器每次用户交互只允许一个window.open,如果没有这个限制,想象一下广告会变成什么样子。 - Sebastian Speitel
2个回答

4

看这个链接:https://javascript.info/popup-windows

这份文档介绍了window.open()功能的正确使用方法。

现代浏览器会阻止这种执行方式,因为滥用该功能可能会带来风险。比如,你进入一个页面,无缘无故就弹出了10个窗口。

实际上,你的代码可以运行,但是在Chrome中会被拦截,地址栏上会有通知。而Firefox则完全阻止该功能,直到手动禁用该选项。


1
感谢您的帮助和提供的有用信息,我觉得自己有些傻,没有先检查浏览器的安全设置。将网址添加到安全/弹出窗口例外列表后,现在它可以正常工作了。这个网页只是用于我和另一个人的内部使用,所以对我们来说这样就足够了。 - Sherman418

1

windows.open 可以接受第二个参数(名称),如果您想打开多个 URL,则必须为每个 URL 设置唯一的名称。在您的情况下,您不能使用这个:

for (var i = 0; i < arrayLength; i++) {
     window.open(searchStrings[i], '_wnd' + i);
}

1
我认为,如果您不是说“你不能这样做”,而是提供一个可行的例子,那么您的帖子会更受欢迎。我采用了您的回复,并在 PHP 中使用递增变量构建了一个适用于我的特殊情况的工作版本: onclick="window.open(this.href,'targetWindow<?php echo $_SESSION['incrID'] ?>','toolbar=no,.... - Burndog
我猜“cant”是一个打字错误。但它仍然不起作用。 - Martin Cremer

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