繁体   English   中英

javascript window.aspx中打开

[英]javascript window.open in aspx

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

请注意,除非您在知道浏览器允许的位置运行此命令,否则这将无法工作,因为window.open调用将被浏览器的popup-blocker阻止。

要打开窗口而不被阻塞,调用必须源自显式用户事件(即“单击”)。

为了解析URL,使用某种JavaScript库很方便,例如prototype ;)

该代码看起来像

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

if(obj.dest) window.open(obj.dest);

要使用原型,您所要做的就是在此处下载javascript文件并将其包含在脚本标签中的页面中;

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

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

用实际代码替换your_js_code的位置。

您是否正在寻找查询字符串“ dest”?

然后这样做:

if(location.href.indexOf('?dest=') >= 0)
    window.open('myurl', '', '');

您是否要使用查询字符串的值来确定要打开哪个页面? 在这种情况下,最好使用一些服务器端代码生成脚本:

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

您也可以使用全JavaScript。 有一些库可以帮助您解析查询字符串,但是快速而肮脏的方法是:

if(location.href.indexOf('?dest=') >= 0) {
    var dest = location.href.substring(location.href.indexOf('?dest=')+6);
    window.open(dest, '', '');
}

这里的术语“快速而肮脏”。 注意,我只在寻找?dest ,即以“ dest”作为第一个查询字符串的URL。 我也不检查值中是否有“&”号,因此它甚至要求“目标”是唯一的查询字符串。 您可以使它更加可靠,但可以做得很详尽,但是正如我所说,a)您应该使用服务器端代码生成此脚本,b)如果您真的不想使用a,则应该使用现有的解析器库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM