【问题标题】:Script Not working from code behind脚本无法从后面的代码中运行
【发布时间】:2013-02-08 13:50:39
【问题描述】:

单击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 页面。 (我认为脚本在我注册时不会发送到客户端,并且警报框正在使它做某事)..不知道为什么会发生..请帮助..提前谢谢

【问题讨论】:

  • 似乎延迟只是警报的作用
  • @Toms..我不知道如何在我的情况下使用延迟(毫秒)

标签: c# javascript jquery asp.net


【解决方案1】:

试试这个

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

【讨论】:

    【解决方案2】:

    您可以改为使用:

    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

    【讨论】:

    • 抱歉我没有提到调用部分:Page.ClientScript.RegisterStartupScript(typeof(string), "Exportfile", "");
    • @samsam123 以我使用的方式使用 ScriptManager.RegisterStartupScript() 而不是 Page.ClientScript.RegisterStartupScript(typeof(string), "..
    【解决方案3】:

    使用这个..

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

    你的情况会这样。

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

    【讨论】:

    • Page.ClientScript.RegisterStartupScript(typeof(string), "Exportfile", "" );
    • 仍然没有结果....如果我在脚本中使用警告框,evrything 工作正常....
    【解决方案4】:

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

    【讨论】:

    • 基本上警报框只是停止用于关闭当前下载窗口的代码,直到我们响应警报框。在那段时间下载完成
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2018-09-08
    • 1970-01-01
    • 2018-06-05
    相关资源
    最近更新 更多