当前位置: 代码迷 >> Web前端 >> 模态窗口中,防止交付时页面刷新弹出新的页面
  详细解决方案

模态窗口中,防止交付时页面刷新弹出新的页面

热度:173   发布时间:2012-07-04 19:33:54.0
模态窗口中,防止提交时页面刷新弹出新的页面

?

在模态窗口中,如有提交按钮,点击后会弹出新的页面。解决此问题有两种方法:?
1、在head中,添加<base target="_self">注意:不要在form中再添加target="_self" 否则失效?
2、把弹出的窗口页面做成框架网页,去加载要展示的网
如果你的浏览器是IE5.5+,可以在对话框中使用带name属性的iframe,提交时可以制定target为该iframe的name。对于IE4+,你可以用高度为0的frame来作:例子,?

? test6.htm?
? ===================?
? <script>?
? ? window.showModalDialog( "test7.htm ")?
? </script>?

? test7.htm?
? ===================?
? if(window.location.search) ? alert(window.location.search)?
? <frameset ? rows= "0,* ">?
? ? <frame. ? src= "about:blank ">?
? ? <frame. ? src= "test8.htm ">?
? </frameset>?

? test8.htm?
? ===================?
? <form. ? target= "_self " ? method= "get ">?
? <input ? name=txt ? value= "test ">?
? <input ? type=submit>?
? </form>?
? <script>?
? if(window.location.search) ? alert(window.location.search)?
? </script>?
3、另外一种解决方法
  1. First and foremost, add the HTML tag (<base target=”_self” />) to the head sectionof your HTML document. Depending on your method of refreshing the form, adding this tag may be sufficient.
    <html>
    <head>
    <base target="_self" />
  2. Next check to see if your modal dialog now correctly refreshes itself.In some cases the modal dialog will still open a new window. For instance if you were using a JavaScript self.location.href= command then you will need to replace this with a simulated hyperlink click event.
    • To do so, add a hyperlink to your page that is styled to be invisible (ie: <a href=”" id=”goLocation” style=”display:none;”>).
    • Then replace your JavaScript self.document.location.href = ‘test.html’; with a click command to your hidden hyperlink as follows:
      document.getElementById('goLocation').href = 'test.html';
      document.getElementById('goLocation').click();

参考 :http://jwcooney.com/2011/12/22/showmodaldialog-opens-a-new-window-on-submit-or-location-href/

?

参考 :http://blog.sina.com.cn/s/blog_4c6e822d0100r6jr.html


  相关解决方案