今天被window.showModalDialog搞得郁闷~~

      今天继续在搞我的Web编辑器,已经是第三天了,今天的任务是把上传文件的功能实现。
我一开始的思路是:点击图形按钮,JS调用window.showModalDialog方法,在其页面上传文件后,
获取文件名和和上传文件的页面地址,返回给调用页面。好,思路有了,就开始作手实现,
这个时候应该是凌晨3:00左右。

      一开始很顺利,JS调试正常,上传文件的代码也封装好了,直接调就行了。
点击上传文件图形按钮,页面弹出,好了可以上传文件了……     
 的确,文件是上传了,但出现了个小问题,就是单击上传的时候会弹出一个新的窗口来处理,
这在意料之外,但又是绝对不能允许的,因为如果用window.showModalDialog调用页面的话,
只能在这个调用的页面里处理数据才能够将处理的结果返回,否则就无法返回数据,
所以那个窗口不能弹出来!绝对不能!凸(-_-)凸。

      先来分析下为什么会弹出新的窗口,因为我在页面上单击了一个Button控件,
这个控件是runat=server的,所以要PostBack一次,如果是普通的页面的话,
PostBack表面上看来就是刷新一下页面,用window.showModalDialog调用的页面是一个对话框,
也就是说不具有刷新的方法,那当它被PostBack之后会怎么办呢,很简单,就是open一个页面,
这个页面就是单击Button之后数据处理完的页面,而以前的页面,
就是那个对话框还原原本本地呆在那里,没处理一点东东-_-!...这样的话,
我就无法得到我想要它返回的数据了,该方案宣布失败~~~(T_T)。。。
算了,既然这样行不通,那就只有另想它法了。

      第二套方案:我再建个页面,用对话框来调这个页面来处理数据,处理完毕后,
再通过网页表单的GET方式传递数据到对话框,然后再通过对话框来返回我需要的数据,,,,
呼~~~这样子总该可以了吧~。。。测试,对话框调用新页面成功,好,在新页面内处理数据,
处理完毕后再传递给对话框……汗,这里又出问题!又是新弹出网页窗口,
无法替换对话框中的页面,对我的Response.Redirect()视而不见,
完全按照JS的window.open()来处理,我倒~~~再一次失败~!!

      不要恢心,再来!思索一阵又得出个第三套方案:还是三个页面:调用对话框的页面,
对话框页面,处理数据页面。这次这样做:先调出处理数据页面,先把数据处理了,
把值传给对话框,然后……然后……然后就错了!这样就得不到对话框的返回值了,
我调反了,,,失败Again~~~

      没关系,失败是成功的儿子的爷爷的孙子的奶奶嘛,再来,我今天就不信了,
这个功能我就不能实现?!第四套方案:不用window.showModalDialog来处理,
直接open弹出新窗口,最后的返回值用表单的GET方式传递给主调用页面。
But.....主调用页面是一个客户端处理页面,全用JS控制,如果GET方式传参数的话,
页面将刷新,那就达不到我的目的了~~~~~~~T_T

      "我"该怎么办(注意:打""号的字要重读,后同)?我"该"怎么办?我该"怎"么办?
我该怎"么"办?我该怎么"办"?...偶很想不这样做功能了,
干脆直接叫用户自己在弹出的新窗口中复制上传后的文件地址,自己粘贴到编辑区算了。
8过这个念头在偶脑中闪了0.4264秒之后就被果断地否觉了,这样做太不人性化了,
用户体验可谓说极差,,,
所以,必须继续搞下去,已经做到这个时候了我总不能放弃嘛,,天~~

 第五套方案:用<a target="_self" href="页面地址" >来实现跳转,嘿嘿,我就不信我治不了你~~。。
代码写好,调试,点超链接,一个新的窗口又神奇地弹了出来,,
天!!我明明用的"_self",是自身框架啊~~~无语。。。。

      就在这个时候,由于想到了"框架"这个强悍的东东,思路就又换了一下,
我何不用框架呢,嵌入对话框中直接调用。好的,试试先……

      第六套方案:在对话框页面中嵌入一个<iframe>,页面就是处理上传的页面,
不过要在<head>里面加一个<base target="_parent">,嘿嘿,这样的话,就可以跳转到父页面了,
理论上是没有什么问题的了。好,作手试验先~~单击上传文件的图形按钮,弹出对话框,
因为嵌入了上传的页面,直接上传就行了。选择本地文件,点击上传……
啊`!!!终于成功了~!!数据终于是返回了回来,555555,,,
…………现在已经是上午9:00了~~~-_-!
      最后实现的过程就是这样的:主调用页面调用对话框,
对话框页包括文件地址和文件名这两个<input type="text">,
用户可以手动输入文件网页地址和文件名,确实后会返回其数据。
当然,也可以通过上传方式得到数据,上传的页面就是嵌入在对话框中的<iframe>,
它保存文件到服务器后,就会返回文件信息给对话框页面,
自动填充文件名和文件地址,用户确定后就会直接插入上传的文件到编辑中光标所在位置了,,,
就是这么简单的一个功能,我却从3:00搞到了9:00,God!
这个效率太恐怖了~~~幸好最后还是搞出来了,不然这次就惨了~!

      今天晚上还要接着通宵,争取能把web编辑器做完,
嘿嘿V1.0的功能不是很强大,凑合着用在毕业设计的后台里面,
等毕业设计完了再继续升级~~
posted @ 2007-04-27 22:45  随机  阅读(5105)  评论(8编辑  收藏  举报