我对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只能使用一次,还是我做错了其他事情?
答案 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);
}