2009-01-12 214 views
0

我有一个动态创建的菜单,我有一个menuItemClick事件绑定在这个事件中,我想执行一个简单的window.open脚本,使用点击项目的url。我需要这样做的原因是我需要设置窗口打开的参数(即没有滚动条,没有工具栏等)。从服务器执行一个简单的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')"; 

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

回答

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); 
    } 
} 
1

你可以把window.open(...)代码调用onButtonClick(项目)的JavaScript函数内部,并与发出的RegisterStartupScript它()一样bdukes建议,然后在该页面的ASPX代码,你可以添加一个事件处理程序像

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

然后当你点击该项目,onButtonClick将与点击的项目作为参数调用。