javascript – 打开一个包含ASPX回发结果的弹出窗口

前端之家收集整理的这篇文章主要介绍了javascript – 打开一个包含ASPX回发结果的弹出窗口前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个ASPX页面,其中包含许多字段,当我单击“导出到PDF”按钮时,它会生成PDF文档.

我现在想在JavaScript中使用“打印PDF”按钮,它可以执行以下操作:

w = window.open(?);
w.print();
w.close();

哪里“?”将执行与“导出到PDF”按钮相同的回发.

解决方法

如果您需要将表单提交(回发)到新窗口,您可以尝试将表单目标更改为假,例如:
var form = $("form");
form.attr("target","__foo");

提交表格.

form.submit();

删除目标(setitmeout(,1) – 在js“event-queue”结尾处的事件,在我们的例子中 – 在表单提交后):

setTimeout(function () { form.removeAttr("target");  },1);

此外,在提交之前,您可以尝试打开带有__foo id的窗口以获得更多样式,并且表单将在此窗口中提交(回发)而不是新窗口:

var wnd = window.open('','__foo','width=450,height=300,status=yes,resizable=yes,scrollbars=yes');

但我不知道如何处理提交的窗口并捕获onload或jquery的ready事件.如果你能分享解决方法,请拨打wnd.print();你可以在这个wnd中使用iframe,也许你会找到一个解决方案.

更新:

试着看看这个原型[在Chrome中测试]:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="https://code.jquery.com/jquery-2.1.0.min.js"></script>
    <script type="text/javascript">
        function PrintResult() {
            var wnd,checker,debug;

            debug = true;

            // create popup window
            wnd = window.open('about:blank','width=700,height=500,scrollbars=yes');

            // create "watermark" __loading.
            wnd.document.write("<h1 id='__loading'>Loading...</h1>");

            // submit form to popup window
            $("form").attr("target","__foo");
            setTimeout(function() { $("form").removeAttr("target"); },1);

            if (debug)
            {
                $("#log").remove();
                $("body").append($("<div id='log'/>"));
            }

            // check for watermark
            checker =
                setInterval(function () {
                    if (debug) $("#log").append('. ');

                    try {

                        if (wnd.closed) { clearInterval(checker); return; }

                        // if watermark is gone
                        if (wnd.document == undefined || wnd.document.getElementById("__loading") == undefined) {
                            if (debug) $("#log").append(' printing.');
                            //stop checker
                            clearInterval(checker);

                            // print the document
                            setTimeout(function() {
                                wnd.print();
                                wnd.close();
                            },100);
                        }
                    } catch (e) {
                        // ooops...
                        clearInterval(checker);
                        if (debug) $("#log").append(e);
                    }
                },10);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Button runat="server" ID="ReportButton" OnClick="ReportRenderClick" Text="Export to PDF" OnClientClick="PrintResult()"/>
        <asp:Button runat="server" Text="Just a button."/>
    </div>
    </form>
</body>
</html>

这是.cs文件

public partial class Default : System.Web.UI.Page
{
    protected void Page_Load(object sender,EventArgs e)
    {

    }

    protected void ReportRenderClick(object sender,EventArgs e)
    {
        Response.Clear();
        Thread.Sleep(2000);
        Response.ContentType = "application/pdf";
        Response.WriteFile("d:\\1.pdf");

        //Response.ContentType = "image/jpeg";
        //Response.WriteFile("d:\\1.jpg");

        //Response.Write("Hello!");
        Response.End();
    }
}

猜你在找的JavaScript相关文章