Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在<;cfheader>;打开PDF文件?_Javascript_Coldfusion - Fatal编程技术网

Javascript 在<;cfheader>;打开PDF文件?

Javascript 在<;cfheader>;打开PDF文件?,javascript,coldfusion,Javascript,Coldfusion,这是一个冷静的问题 我有一个cfm页面,它有一个按钮,onClick调用页面标题中的以下Javascript函数: function confirm_expiration_letters() { var resultOfConfirm = confirm("Would you like to send expiration and reminder letters?"); if (resultOfConfirm == true) { document.body.s

这是一个冷静的问题

我有一个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=“默认”


你知道我可以把它放在哪里来关闭光标动画吗?我尝试了很多地方,但都不起作用。一旦cfheader和cfcontent调用发生,就会失去对上一个窗口和光标的控制。

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

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

document.body.style.cursor=“默认”;

问题是这样做可能会(可能会)破坏cfheaders,因为cfflush设计用于刷新部分结果,并且会包含头。但这是我能想到的唯一一件事。

您可以在cfheader上方尝试类似的方法

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

document.body.style.cursor=“默认”;

问题是这样做可能会(可能会)破坏cfheaders,因为cfflush设计用于刷新部分结果,并且会包含头。但这是我能想到的唯一一件事。

使用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
      });
}

}

使用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
      });
}

}如果我理解正确,您希望在准备PDF时使用“等待”光标,然后再返回到标准光标

当您等待请求的文档时,web浏览器不会自动执行此操作吗?IE:在加载文档时,只要执行window.location,光标就会自动变为“wait”,然后在送达文档后,返回到“auto”


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

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

当您等待请求的文档时,web浏览器不会自动执行此操作吗?IE:在加载文档时,只要执行window.location,光标就会自动变为“wait”,然后在送达文档后,返回到“auto”


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

。。。本周我看到的最模糊的问题有10点:)光标会发生什么变化?它是否停留在等待光标上?单击。。。本周我看到的最模糊的问题有10点:)光标会发生什么变化?它是否停留在等待光标上?是的,根据cfheader的CF引用,将cfflush置于其上方将抛出错误:(无论如何,谢谢你的建议。这就是我所想的。定位一个新窗口如何?是的,根据cfheader的CF参考,将cfflush置于其上方将抛出一个错误。)(无论如何,谢谢你的建议。这就是我的想法。以新窗口为目标如何?cfheader/cfcontents会导致报告加载到PDF中,从而触发Adobe Reader(针对我的情况)加载。我看到打开或取消的提示,打开会在Reader中加载。我认为问题仍然存在,即一旦cfheader触发,程序控制将永远不会返回原始页面。可能我误解了你的建议Josh。对不起,我不完全理解你的顾虑和你试图创造的体验。我想我已经完成了您试图做的事情,向PDF生成页面发出AJAX请求,让PDF生成将文件保存到服务器,然后在AJAX请求完成后使用回调在新的浏览器窗口中打开PDF。PDF将打开,用户将停留在请求页面上。谢谢Josh。您是否能够请看一些代码片段来说明这一点?cfheader/cfcontents会导致报告以PDF格式加载,从而触发Adobe Reader(针对我的情况)加载。我看到打开或取消的提示,打开会在Reader中加载。我认为问题仍然存在,即一旦cfheader触发,程序控制将永远不会返回原始页面。可能我误解了你的建议Josh。对不起,我不完全理解你的顾虑和你试图创造的体验。我想我已经完成了您试图做的事情,向PDF生成页面发出AJAX请求,让PDF生成将文件保存到服务器,然后在AJAX请求完成后使用回调在新的浏览器窗口中打开PDF。PDF将打开,用户将停留在请求页面上。谢谢Josh。您是否能够请看一些代码片段来说明这一点?是的,这是正确的Adam。我确实删除了JS行document.body.style.cursor=“wait”;但是,尽管PDF生成代码本身(在我的沙盒中)需要一瞬间生成,但我插入了一个“sleep”在此之前的5秒,我看不到光标在等待期间从默认箭头模式更改。因此,除非我的CF诱导睡眠被视为触发“等待”模式的合法浏览器事件,否则我看不到完全的