脚本不能从代码背后工作

时间:2013-02-07 10:33:48

标签: c# javascript jquery asp.net

我需要在单击framedialog内容页面内的下载按钮后关闭下载窗口(使用jquery framedialog打开)。我正在创建一个单独的iframe用于发送下载文件,如下所示:(Download.aspx根据文件ID将文件发送到客户端)

var script = @"<script language=JavaScript>function Export(fileID)
                            {
                                    var iframe = document.createElement('iframe');
                                    iframe.src = 'DownloadForm.aspx?ID='+ fileID;
                                    iframe.style.display = 'none';
                                    document.body.appendChild(iframe);
                                    //alert('AlertBox'); 
                            }
                            </script>"; 
Page.ClientScript.RegisterStartupScript(typeof(string), "Startup", script);  

完成下载后,我将关闭下载窗口。 但我的问题是,如果我使用评论的alertBox然后我的两个代码工作(下载和关闭)罚款。但我希望它没有警报框就能发生。当我不使用警告框时,不会调用Download.aspx页面。 (我认为脚本不是客户端,而我注册它,警报框正在使它做一些事情)..不知道为什么它发生..帮助..谢谢提前

4 个答案:

答案 0 :(得分:1)

试试这个

Page.ClientScript.RegisterStartupScript(getType(), "Startup", script, true); 

答案 1 :(得分:1)

您可以改为使用:

ScriptManager.RegisterStartupScript(this, GetType(), "StartupScript", script, true);

script的位置:

var script = @"function Export(fileID)
                            {
                                    var iframe = document.createElement('iframe');
                                    iframe.src = 'DownloadForm.aspx?ID='+ fileID;
                                    iframe.style.display = 'none';
                                    document.body.appendChild(iframe);
                                    //alert('AlertBox'); 
                            }
                            //Export(YourFileIDHere);"; 

但是,您还应注意,代码仅定义要包含在脚本中的函数。您不要在JS代码中的任何位置调用此函数。 (所以我添加了一个注释代码,可以使用正确的fileID取消注释要执行的函数。

答案 2 :(得分:1)

使用此..

Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "function   name", true);

对于你的案例,它将是。

Page.ClientScript.RegisterStartupScript(this.GetType(), "Call my function", "Export(file Id);", true);

答案 3 :(得分:1)

我找到了解决问题的方法。基本上我在客户端完成下载之前关闭了下载窗口。 所以,我在下载窗口的父页面中添加了用于下载(隐藏)文件的框架,然后我关闭了下载窗口