【问题标题】:javascript window.open in aspxjavascript window.open 在 aspx 中
【发布时间】:2010-01-19 09:01:20
【问题描述】:

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

【问题讨论】:

  • 非常感谢您的帮助。我对此很陌生,所以也想知道代码是放在 aspx 文件中还是放在 page_load 中的 aspx.vb 中。此外,如果它进入 aspx,我如何在页面加载时触发它
  • 如果您需要其他帮助,请始终编辑您的问题;)

标签: javascript query-string asp.net


【解决方案1】:

请注意,除非您在知道浏览器允许的情况下运行此程序,否则这将不起作用,因为 window.open 调用将被浏览器弹出阻止程序阻止。

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

【讨论】:

    【解决方案2】:

    您是否专门寻找查询字符串“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”作为 first 查询字符串的 url。我也不检查值中是否有 & 符号,因此它甚至要求“dest”是 only 查询字符串。您可以尽可能详细地使其更可靠,但正如我所说,a)您应该使用服务器端代码生成此脚本,b)如果您真的不想使用现有的解析器库,则应该使用 a。

    【讨论】:

    • 这段代码去哪儿了?在 aspx 中作为 javascript 函数还是在 page_load 上的 .aspx.vb 文件中?
    • 所有示例都是javascript代码,因此它们应该出现在&lt;script type="text/javascript"&gt;块中。如果您愿意,示例 1 和 3 可以出现在外部 js 文件的函数中。示例 2 使用 vb 代码呈现 javascript,因此它必须仍然在脚本块中,但必须在 default.aspx 内。
    【解决方案3】:

    为了解析 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 文件 here 并将其与脚本标签一起包含在您的页面中;)

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

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

    用实际代码替换 your_js_code。

    【讨论】:

      猜你喜欢
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-09
      • 2012-04-18
      • 2015-08-20
      • 2011-03-28
      相关资源
      最近更新 更多