??xml version="1.0" encoding="utf-8" standalone="yes"?>
1?SPAN style="FONT: 7pt 'Times New Roman'"> 下蝲完毕后不能够重定向画面。这U情冉|发生在用了frameset的画面上?BR>
基本现象Q?/STRONG>
点击下蝲按钮Q下载执行完毕后Q再按其他的按钮Q会出现javascript错误Q不能够扑ֈ原来画面中的控g。原因就是因Z载完毕后不能够重定向到原来的画面?/SPAN>
原因及对{?/SPAN>1Q?/SPAN>
提交的时候把提交?/SPAN>form?/SPAN>target讑֮?/SPAN>topQ这样下载完毕后Q页面能够重定向Q就不会出现javascript代码语法错误的现象。同时用这U方法能够把下蝲q程中出现的错误信息昄在原来的画面上。此旉要注意一点,׃提交到的?/SPAN>topQ所以出错返回的画面也要是整?/SPAN>frame的画面,同时q要保存原画面用戯入的数据Q所以徏议原来画面的数据使用session来保存?/SPAN>
function clickButton(){
form.target = “_top?BR> form.submit();
}
原因及对{?/SPAN>2Q?/SPAN>
在当前页面添加一个内用于下载用,提交下蝲?/SPAN>form的时候可以把target指定到内上Q这样不会媄响到原来画面Q原画面可以l箋操作。不q这U方法存在着弊端Q一是很难?/SPAN>javascript防止多重提交。二、如果下载过E中出现错误Q显C错误信息比较麻烦。鉴于上qCU弊端用这U方法一般是提交两次Q第一ơ正常提交把要下载的数据准备好,保证下蝲能够正常q行Q对于出错的处理也是在这一ơ进行的Q第二次提交是提交到内祯Q此ơ提交只是进行下载直接,不考虑会出现错误。这ơ提交是?/SPAN>onload中执行的?/SPAN>
<iframe name="download" style=?B> visibility:hidden?>
提交的时候用下面的javascript
function clickButton(){
form.target = “download?
form.submit();
}
2?SPAN style="FONT: 7pt 'Times New Roman'"> 不正常的下蝲现象?/SPAN>
现象1Q?/SPAN>
?/SPAN>windows2000操作pȝ下,有时候点M载,弹出下蝲对话框后点击打开Q会再次弹出打开对话框?/SPAN>
原因及对{:
q可能是IE的安全设定生的问题Q如果要解决q个问题Q也有办法。我在反复的试验中发玎ͼ出现q种现象的时候,提交下蝲?/SPAN>form中的数据?/SPAN>server端被用到Q此时就会出现弹Zơ对话框的现象,如果没有form中没有数据或?/SPAN>form中的数据?/SPAN>server端不会被使用Q那么就不会有这U现象,所?/SPAN>download?/SPAN>form可以讑֮一个空?/SPAN>form。(如果考虑?/SPAN>netscape览器,form里面q要放上一?/SPAN>hidden控gQ否?/SPAN>netscape?/SPAN>form提交不了。)q样q种现象׃会出C?/SPAN>
<form name=”mainForm?gt;
<input type=”button?name=”download?onclick=”clickButton()?gt;
</form>
<form name=”downLoadForm?gt;
<input type=”hidden?name=”noUsed?/>
</form>
使用?/SPAN>javascript如下Q?/SPAN>
function clickButton(){
downLoadForm.submit();
}
现象2Q?/SPAN>
?/SPAN>windowsXP下,有时候下载会D弹出安全制M的提C条?/SPAN>
原因及对{:
我所遇到的这L(fng)问题产生的原因是Q我是用?/SPAN>1中的对策2,在准备完毕数据后Q在onloadҎ(gu)中执行了提交到内的下蝲操作Q结果出C安全的提C条Q页面最上端Q。对{方法就是不?/SPAN>onload提交下蝲的操作?/SPAN>
3?SPAN style="FONT: 7pt 'Times New Roman'"> 有关下蝲的性能问题?/SPAN>
如果下蝲的是固定的文件一般不会有问题Q我们可以通过FilecȝҎ(gu)得到文g的长度,然后分次写入到流可以了。但是有时候下载的内容可能动态组成的Q比如说从数据库索出来的{。在q种情况下,如果先从数据库中索出所有的数据Q然后在把数据按照下载的格式~辑出来Q最后再出长度分次写入到流中,性能肯定不高。ؓ(f)了提交性能Q我们可以这样做Q一ơ编辑一定数目的记录Q然后就向流中写入,q样也是分次的写入到中。在q种方式下,用户能够快看到下蝲的对话框Q减等待时_同时也减了下蝲q程中内存的使用量,提高了下载的性能?/SPAN>
上面三个问题是我在?/SPAN>struts框架做下载功能时遇到的一些问题,以及自己的一些对{,供大家参考如果大家有更好的解军_法,误教?/SPAN>