在<cfheader>打开PDF文件后,如何重新获得程序控制?</cfheader>

时间:2012-05-15 15:58:08

标签: javascript coldfusion

这是一个ColdFusion 8问题。

我有一个cfm页面,其中有一个按钮,onClick调用位于页眉中的以下Javascript函数:

function confirm_expiration_letters() {
    var resultOfConfirm = confirm("Would you like to send expiration and reminder letters?");
    if (resultOfConfirm == true) {
        document.body.style.cursor = "wait";
        window.location="_expiration_letters.cfm";
    }
}

在被调用的页面上,生成一系列电子邮件,然后使用以下两行生成并显示PDF报告文件:

<cfheader name="Content-disposition" value="attachment;filename=#fileName#">
<cfcontent type="application/pdf" file="#docPath#/#fileName#" deletefile="true">

注意在JS函数中,光标变为“wait”。但是在上面的cfheader调用之后程序控件似乎丢失了,所以我找不到任何可以将光标重置回的地方:     document.body.style.cursor =“default”;

您是否有关于我可以放置此项以关闭光标动画的想法?我尝试了多个地方但它不起作用。一旦cfheader和cfcontent调用发生,就会丢失对前一个窗口和光标的控制。

3 个答案:

答案 0 :(得分:0)

您可以在cfheader上面尝试这样的事情。

<script>
document.body.style.cursor = "default";
</script>
<cfflush/>

问题在于这样做可能(可能会)搞砸cfheaders,因为cfflush旨在刷新部分结果并包含标题。但这是我唯一能想到的。

答案 1 :(得分:0)

使用HTML / GIF动画显示加载消息,而不是更改光标。加载PDF时,它将替换加载屏幕。

我建议使用包含加载消息的隐藏div,然后使用JavaScript使其在需要时显示。

这是一些JavaScript。这是用jQuery完成的。

function confirm_expiration_letters() {
var resultOfConfirm = confirm("Would you like to send expiration and reminder letters?");
if (resultOfConfirm == true) {
    $('#Loading').fadeIn(); //SHOW THE LOADING INDICATOR
    $.post('PDFGenerator.cfm', function(returnData){  // AJAX POST, CALLBACK
        //RETURN THE FILENAME OR LOCATION OF THE PDF
        var FileName = $.trim(returnData); // TRIM THE RETURNED DATA
        window.open("path_to_file/" + FileName,"_blank"); // NEW WINDOW
        $('#Loading').fadeOut();  // HIDE THE LOADING INDICATOR
      });
}

}

答案 2 :(得分:0)

如果我理解正确,您希望在准备PDF时有一个“等待”光标,然后返回到标准光标。

当您等待所请求的文档时,网页浏览器是否自动执行此操作? IE:只要你执行window.location,文档加载时,游标会自动更改为“等待”,然后在提供文档后,返回“自动”。

这就是我所看到的(当运行类似于你的代码时)。这是不是你看到了什么?