在aspx中打开javascript window.open

在aspx中打开javascript window.open,javascript,query-string,asp.net,Javascript,Query String,Asp.net,我有后面有vb.net的aspx页面。我需要使用javascript在页面加载时打开一个新窗口。我还从上一页发送了一个查询字符串(www.mysite.com/default.aspx?dest=register.aspx)。我需要javascript来解析查询字符串,并且仅当URL具有查询字符串时才打开新窗口。 请建议对于解析URL,使用某种javascript库非常方便,例如;) 代码看起来像 var str = "http://www.mysite.com/default.aspx?des

我有后面有vb.net的aspx页面。我需要使用javascript在页面加载时打开一个新窗口。我还从上一页发送了一个查询字符串(www.mysite.com/default.aspx?dest=register.aspx)。我需要javascript来解析查询字符串,并且仅当URL具有查询字符串时才打开新窗口。
请建议

对于解析URL,使用某种javascript库非常方便,例如;)

代码看起来像

var str = "http://www.mysite.com/default.aspx?dest=register.aspx";
var obj = str.parseQuery();

if(obj.dest) window.open(obj.dest);
要使用prototype,只需下载javascript文件并将其包含在页面中的script标记;)

您可以将代码放入onload事件处理程序,但要注意stefpet注意到的安全限制。如果您只想重定向到页面,那么可以在codebehind中执行。如果你真的想让它加载,那么你需要

ClientScript.RegisterClientScriptBlock(GetType(), "load_redirect", your_js_code , false);

用实际代码替换_js_代码。

您是在专门寻找查询字符串“dest”吗

这样就可以:

if(location.href.indexOf('?dest=') >= 0)
    window.open('myurl', '', '');
是否要使用querystring的值来确定要打开的页面?在这种情况下,最好使用一些服务器端代码生成脚本:

window.open('<%=Request.QueryString("dest")%>', '', '');

“又快又脏”是这里的术语。请注意,我只查找
?dest
,即第一个查询字符串为“dest”的url。我也不检查值中是否有符号,所以它甚至要求“dest”是唯一的查询字符串。您可以尽可能地详细说明,以使其更可靠,但正如我所说的,a)您应该使用服务器端代码生成此脚本,b)如果您确实不想使用a,则应使用现有的解析器库。

请注意,除非您运行此程序,并且您知道浏览器允许此操作,否则这将无法工作,因为window.open调用将被浏览器弹出窗口阻止程序阻止


要在不被阻止的情况下打开窗口,调用必须源自显式用户事件(即“单击”)。

此代码去哪里了?在aspx as javascript函数中或加载页面上的.aspx.vb文件中,所有示例都是javascript代码,因此它们应该出现在
块中。如果您愿意,示例1和3可以出现在外部js文件中的函数中。示例2使用vb代码呈现javascript,因此它必须仍在脚本块中,但必须在default.aspx中。非常感谢您的帮助。我对此很陌生,所以我也想知道代码是放在aspx文件中还是放在加载页面的aspx.vb中。此外,如果它进入aspx,我如何在加载页面时触发它如果您需要其他帮助,请始终编辑您的问题;)
if(location.href.indexOf('?dest=') >= 0) {
    var dest = location.href.substring(location.href.indexOf('?dest=')+6);
    window.open(dest, '', '');
}