南京大学素材库 Coming soon

预计在五月二十日之前,工作室将推出“南京大学素材库”。这个项目收集本校最常用的素材,然后由专业人员进行整理和优化,打包放出,方便同学在设计、制作简历时候的需要。

今天把这个网页写好了,本来想做自己的Java Web HelloWorld,但是好像又是时间来不及了,等有时间了再一步一步写吧。

然后想实现一个简单的Ajax下载文件,就是像sf那样弹出等待页面,然后过了一会跳出一个下载窗口,还告诉你看没看到下载窗口,如果没有看到还可以点击this direct link。发现自己越来越崇拜SF了,于是也希望自己的页面里能有一个类似的东西。

但是发现用Ajax的XMLHttpRequest发出去以后不行,拿Firefox的插件Firebug的确能看到有响应,文件也传回来了,但是不知道是不是没有设置MIMEtype的原因,没有弹出下载窗口。上网搜了一下,发现有人说这个是不能实现的,只好作罢。我在向是不是写一个Servlet对Response执行一个setContentType方法,设置为zip对应的MIMEtype。但是发现也不简单,这样的话还得把zip读进来吧,抑或是setRedirect()方法把设置了ContentType的Response传过去?不知道。放弃。

然后用了一个比较笨拙的window.open()。异步的那套东西都没有了。而且这种方式也不太好,虽然在IE7和Firefox上都没有弹出新窗口而只是一个下载提示框,但是Opera和IE6还是跳出空白窗口,地址栏上还有文件地址,很不好。再放弃。

最后只能回到iframe。别看iframe这个东西确实比较难看,但是关键时刻还是要顶大用处的。但是它实在难看怎么办呢,我们就让它display=none,还不写在css里,直接写到js里。光在页面上看不到还是不够的,因为它太丑了,我们最好还要把它藏到js里去。在load的时候往DOM树里添加这个东西,之后立刻设置display为none,点击按钮就切换src。

这样在Opera和Firefox中都可以实现凑活的效果,但是IE7似乎是出于安全原因没有弹出下载提示。再议。

你可能感兴趣的:(Ajax,css,Opera,Firebug,firefox)