在开始这篇文章之前,还是先说点不相干的,最近博客多了不少emacs的文章,并不是我(dante)从Vim转向emacs了,而是由于本博目前是有三个作者的(dante、ian、lr),而ian是用emacs的,所以本着linux本是一家的原则,会把我们的心得都放在这个博客里和大家共享。
 
呵呵,好啦,闲话不多说,进入正题。
最近在做流程系统的时候,发现用showModalDialog来限制用户焦点及流程的确是不错的方法,不过在使用中也发现了两个问题:
1.showModalDialog打开的窗口中,如果是调用form表单或者其他需要重新生成页面的操作,一定会打开新窗口
2.showModalDialog打开的窗口中是无法刷新的
 
感谢google大神的协助,总算让我找到了答案
 
1.通过frame页来装载页面
例如,需要原来的调用是
window.showModalDialog("a.html")
我们只需要新建一个页面b.html:
<frameset rows="0,*"> 
<frame src="about:blank"> 
<frame src="a.htm"> 
</frameset>

然后将原来的调用改成:

window.showModalDialog("a.html")

实际上b.html可以做成一个通用的页面,通过传入的url来决定frame内的页面url,不过要记得urlencode
 
2.在刷新这个问题上,我试过无数方法,包括history.go(0) 和 location.reload() 都没有办法实现,后来在一篇文章上偶尔发现用:
location.replace(URL)

居然可以实现,不过代价就是向前操作不可用了(本来就不可用……)
原文链接如下:
http://blog.csdn.net/sgear/archive/2008/07/23/2695298.aspx
再之后发现还有其他几种刷新方式,不过由于问题已经解决,所以就没有再去试了:
history.go(0
location.reload() 
location=location 
location.assign(location) 
document.execCommand(‘Refresh’
window.navigate(location) 
location.replace(location) 
document.URL=location.href

OK,就这样~~

暂无相关产品

3则回应给“showModalDialog的几个问题解决”

  1. MadPer说道:

    看出dante先生在前三行表现出的无奈了…话说,其实ian也有自己的主页吧?好像进去看过,不过是英文的…

    [回复]

    ian 回复:

    这个……不知道你找到的是哪位大神的主页,我目前暂时还没有自己专门的技术博呢,现在只是在博主这里打打酱油
    还得感慨一下,Emacs和Vim在一起就是容易引起争议啊

    [回复]

    MadPer 回复:

    嗯,我在emacser.com看到有个人叫ian,点开是个网页,上面还写着Do it, ian,地址是http://www.doitian.com/
    我想起来之前IRC上一个人说的话:任何对VIM或者Emacs的功能的讨论终将变为vim及Emacs间的论战.
    刚才去了那个网站看了下,好像是lan…我有一次没有分清I和l…

    [回复]

发表评论