使用window.open打开多个URL

时间:2018-12-03 12:11:03

标签: javascript arrays window.open

我对javascript很陌生,因此对初学者的问题表示歉意。基本上,我在window.open()方法上遇到一些问题。

我的代码本质上需要一个用户字符串,向它添加几个不同的变体,然后搜索这些不同的变体,然后应该为每个结果打开一个新窗口。但是,似乎在我的第一个window.open语句之后,代码停止执行。这就是我正在使用的:

router := mux.NewRouter()
router.Use(srv.GetCaseMiddleware())

//GetCaseMiddleware middleware to make match URL case insensitive
func (srv *Server) GetCaseMiddleware() (w mux.MiddlewareFunc) {
    var middleware mux.MiddlewareFunc = func(next http.Handler) http.Handler {
        return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
            r.URL.Path = strings.ToLower(r.URL.Path)
            next.ServeHTTP(w, r)
        })
    }
    return middleware
}

我用window.open以外的代码测试了循环,以确保它正确地遍历了数组,并且我将i设置为大于0的值以测试打开数组中的第二项或第三项。

好像window.open只能使用一次,还是我做错了其他事情?

2 个答案:

答案 0 :(得分:2)

签出:https://javascript.info/popup-windows

本文记录了window.open()功能的正确用法。

由于存在滥用功能的风险,现代浏览器会阻止这种执行。 想象一下,您无故进入页面并打开了10倍窗口。

实际上,看看您的代码是否有效,但是chrome阻止了该窗口,并在地址栏上通知了您。但是,Firefox会完全阻止它,直到手动禁用该选项为止。

答案 1 :(得分:0)

windows.open可以使用第二个参数(名称),如果要打开多个URL,则必须为每个URL设置唯一的名称。在您的方案中,您不能使用此:

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