2

这是一个 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 函数中,光标变为“等待”。但是在上面的 cfheader 调用之后程序控件似乎丢失了,所以我找不到可以将光标重置回的任何地方: document.body.style.cursor = "default";

你对我可以把它放在哪里来关闭光标动画有什么想法吗?我尝试了多个地方,但它不起作用。一旦 cfheader 和 cfcontent 调用发生,对前一个窗口和光标的控制就会丢失,它就会出现。

4

3 回答 3

0

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

当您等待请求的文档时,Web 浏览器不会自动执行此操作吗?IE:一旦你做你的window.location,当文档加载时,光标会自动变为“等待”,然后一旦提供了文档,就会返回到“自动”。

这就是我所看到的(在运行与您类似的代码时)。这不是你看到的吗?

于 2012-05-16T07:33:31.667 回答
0

您可以在 cfheader 上方尝试类似的操作。

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

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

于 2012-05-15T16:09:21.217 回答
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
      });
}

}

于 2012-05-15T17:23:52.773 回答