我尝试使用javascript和window.open()函数打开多个浏览器窗口。我想通过查询字符串将参数传递给我的新窗口,如下所示:
window.open('http://www.myfoo.com/foopage.aspx?fooparm=1', '_blank');
这会打开一个新窗口,地址栏中的地址正确,但浏览器显示404找不到。但是,如果我在这个新窗口中按Enter键,页面会正确加载。
通过一些试验和错误,我发现使用没有查询字符串参数的window.open可以很好地工作:
window.open('http://www.myfoo.com/foopage.aspx', '_blank');
我应该了解window.open和查询字符串参数的限制吗? 还有另一种方法可以在新窗口中将参数传递给新页面吗?
非常感谢您的见解。
(注意:此脚本在C#中是服务器端生成的,并使用Ajax的ScriptManager.RegisterStartupScript注入到页面中。)
答案 0 :(得分:3)
今天早上我找到了原因:
在web.config中,在全球化下,responseEncoding设置为“cp037”。我将其更改为“ISO-8859-15”,我的窗口正确弹出。
<globalization fileEncoding="ISO-8859-15" requestEncoding="ISO-8859-15" responseEncoding="ISO-8859-15" culture="auto" uiCulture="auto"/>
答案 1 :(得分:0)
有一件事是肯定的:限制与window.open()之前没有关系。我的服务器运行mod_perl,我经常在window.open()中使用GET请求。
答案 2 :(得分:0)
尝试
window.open("javascript:window.location='http://www.myfoo.com/foopage.aspx?fooparm=1'", "_blank");