从服务器执行一个简单的window.open脚本

时间:2009-01-12 17:46:16

标签: c# asp.net javascript

我有一个动态创建的菜单,我有一个menuItemClick事件。在这个事件中,我想执行一个简单的window.open脚本,它使用点击的项目的网址。我需要这样做的原因是我需要设置窗口的参数(即没有滚动条,没有工具栏等等。)

我的问题是,有没有办法简单地创建一个要执行的脚本字符串,然后实际执行它?

到目前为止,我有:

string script = "window.open('" + e.Item.NavigateUrl + "' ,'_MAIN_WINDOW','width='+ screen.width + '-60,height=' + screen.height + '-500,left=' + screen.left + '-30,top=' + screen.top + '-30,screenx=0,screeny=0,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,copyhistory=no, resizable=yes')";

但我不知道如何执行这个脚本。

3 个答案:

答案 0 :(得分:1)

你可以将window.open(...)代码放在一个名为onButtonClick(item)的javascript函数中,然后像bdukes建议的那样用RegisterStartupScript()发出它,然后在页面的aspx代码中你可以添加一个eventHandler喜欢

<a id="bla" onclick="javascript:onButtonClick(this);" >Dummy item</a>

然后当您单击该项目时,将使用单击的项目作为参数调用onButtonClick。

答案 1 :(得分:0)

如果您需要在部分回发后运行,则需要使用Page.ClientScript.RegisterStartupScript(或ScriptManager.RegisterStartupScript

答案 2 :(得分:0)

覆盖页面的OnPreRender事件。

你在里面做:

protected override void OnPreRender(EventArgs e)
{
  base.OnPreRender(e);  


  foreach (MenuItem item in m1.Items)  // m1 is the menu in my case :)
  {
    item.Target = string.Format("window.open('{0}');", item.NavigateUrl);
  }
}