IE10下载问题有两个javascript表单提交
IE10 download issue with two javascript form submits
所以我认为我有一个有点独特的问题,我不确定解决它的最佳方法是什么。我有一些遗留代码,过去在所有浏览器中都运行良好,但在IE10中突然不起作用了。我会尽力解释它是如何工作的,以及我认为问题出在哪里。
我正在开发一个网上银行页面,用户可以选择将其帐户历史记录下载为QIF、CSV等。该页面是用经典的ASP和VB服务器代码编写的。该功能的工作方式是用户单击下载按钮,该按钮会用一系列可点击的图像重新加载页面,每个下载文件类型一个。根据他们单击的表单,然后调用一个javascript函数,该函数在页面上提交一个隐藏表单,然后提交第二个隐藏表单以重新加载带有帐户历史记录的原始视图并再次进行筛选。第一个表单操作调用一个asp页面,该页面构建文件并将其作为响应附件返回,通常会提示浏览器下载文件,然后第二个提交操作只是包含历史详细信息的原始asp页面。在IE10中,文件永远不会下载,而是会进行一些处理,重新加载历史记录的第二次提交会顺利完成。
我在查找中发现,如果我注释掉提交第二个表单的javascript行,那么下载就可以了,所以我认为发生的是提交是异步发生的,重定向在下载之前返回。或者类似的东西。我不确定。我正试图在不需要完全重写功能的情况下找到解决方案。有什么想法吗?
编辑:
发生这一切的页面是accountDetails.asp
javascript——
function SetOFX(type){
// There is some code that does conditional handling of the @type parameter
document.forms.DownloadForm.submit();
document.forms.Finished.submit();
return false
}
下载表格——
<form name="DownloadForm" id="DownloadForm" action="downloadofx.asp" method="post">
<!-- a bunch of input type="hidden" elements -->
</form>
成品形式——
<form name="Finished " id="Finished " action="accountDetails.asp" method="post">
<!-- a bunch of input type="hidden" elements -->
</form>
因此,DownloadForm调用一个单独的asp页面来获取下载文件,然后Finished表单发布到用户已经所在的页面,以重新加载帐户历史记录详细信息,而不是显示下载图像按钮。我一开始就意识到这是一种非常糟糕的方式;这是由正在学习的人编写的遗留代码,已经被数百名客户用于生产,所以如果没有老板和所有客户的重大项目批准,我不能直接重写它。
iI还没有测试过这些想法,但如果你想保持当前的架构,你可以尝试检测文件何时完全下载,然后导航离开。
看看这个问题,了解如何检测浏览器何时下载了文件。
另一个想法是放弃第一个表单提交,转而使用一个简单的a
链接,该链接具有指向文件下载链接的href
属性,使用查询字符串参数来传递附加数据。如果没有taget="_blank"
仍然遇到同样的问题,您可能还想将其放在链接上。
这是我们最终得出的答案。上面的javascript本来就不应该起作用,事实上,我们在测试后发现,它在很多地方都不起作用,但我们关心的部分(文件下载(一直在起作用。事实证明,直到IE10,所有的浏览器都足够聪明,知道你不应该以这种方式提交两个表单,结果他们忽略了第二次提交。然而IE10正在处理这两个文件,重定向在文件下载之前返回。由于我们不关心自动重定向,所以我们只是去掉了提交,而是在完成的表单中添加了一个提交按钮,这样用户就可以手动返回到以前的视图。
固定的Javascript——
function SetOFX(type){
// There is some code that does conditional handling of the @type parameter
document.forms.DownloadForm.submit();
return false
}
固定的成品
<form name="Finished" id="Finished" action="accountDetails.asp" method="post">
<!-- a bunch of input type="hidden" elements -->
<input type="submit" value="Return to Account Details" />
</form>
- 组合两个javascript函数
- 比较包含多个值对的两个JavaScript数组
- 为什么这两个JavaScript函数调用具有相同的“;这个“;价值
- 无法延迟iPhone/iPad上的两个JavaScript操作
- 比较IF条件下的两个javascript数值
- 我可以在两个javascript文件之间传递一个字符串吗?
- 为标记调用href中的两个javascript函数
- 如何执行两个javascript函数
- 两个javascript网络工作者连续打印输出-为什么不同时打印呢
- 如何手动绑定两个javascript文件
- 两个javascript脚本的非独立性
- 合并两个Javascript数组,一次合并三个元素
- 为同一标记中的两个不同事件调用两个javascript方法
- 将两个Javascript函数组合到一个窗口中.nload不起作用
- 结合两个JavaScript函数
- IE可以同时执行两个JavaScript函数吗?
- 两个 JavaScript 文件,哪个方法首先调用
- 在 html 中的两个 JavaScript 之间传递值
- 两个 JavaScript 对象具有相同的属性实现方式,但原型不同
- 如何将两个Javascript函数合二为一