调用window.showModalDialog(),不能调用window.location.reload()和提交表单时打开新窗口的解决方案

我们往往会遇到这种情况,就是用 window.showModalDialog弹出的窗口,在里面提交form表单时,或者location.href=""时,都会新弹出窗口,很恶心的。

注:showModalDialog窗口与window.open打开的窗口刷新本窗口时不同,showModalDialo窗口也不能用F5刷新,也没有右 键操作

建议采用以下方式:

A. 在模式窗口页面中加入:      
<base target="_self"> //在html和body之间
<a id="reload" href="本页面url" style="display:none"></a>

B. 在需要执行刷新操作的地方执行以下js:
reload.click();//reload为A中隐藏a标签的id,当然可以换成其它名称

时间: 2024-10-11 03:56:01

调用window.showModalDialog(),不能调用window.location.reload()和提交表单时打开新窗口的解决方案的相关文章

解决以showModalDialog打开的页面在提交表单时弹出新窗口的问题

源代码如下: 父页面: window.showModalDialog("../readfile/readFile.jsp","","dialogWidth=1000px;dialogHeight=500px;status=no;help=no;resizable:yes"); 子页面:readFile.jsp 1.在head标签内加入<base target="_self">. <!-- 设置base tar

调用submit()方式提交表单

今天在看高级程序设计时看到的这样一段话: 在以调用submit()方法的形式提交表单时,不会触发submit事件 写了一个小例子做了下测试,的确如此: <form id="fm" action="http://www.baidu.com"> <input type="text" id="txt"> <button id="btn" type="submit"

ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式

一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并不是用户主动触发的,所以它认为这是不安全的就拦截了,即使 ajax 回调函数中模拟执行 click 或者 submit 等用户行为(trigger('click')),浏览器也会认为不是由用户主动触发的,因此不能被安全执行,所以被拦截. 说明: 1.如果是在 <a href="javascri

使用BOM 的window对象属性打开新窗口

★  示例1 要求:弹出新窗口,并向新窗口写入动态HTML代码 代码 <buttononclick="btnOpen()">打开新窗口</button> <hr/> <span>使用JavaScript打开一个新的浏览器选项卡,并向其中动态写入HTML代码</span> <script> function openNewWin(){ var w = window.open();/*打开空白窗口*/ var d =

javascript 打开新窗口(window.open)

打开新窗口(window.open) open() 方法可以查找一个已经存在或者新建的浏览器窗口. 语法: window.open([URL], [窗口名称], [参数字符串]) 参数说明: URL:可选参数,在窗口中要显示网页的网址或路径.如果省略这个参数,或者它的值是空字符串,那么窗口就不显示任何文档. 窗口名称:可选参数,被打开窗口的名称. 1.该名称由字母.数字和下划线字符组成. 2."_top"."_blank"."_selft"具有特

打开新窗口(window.open) 用法

窗口名称:可选参数,被打开窗口的名称. 1.该名称由字母.数字和下划线字符组成. 2."_top"."_blank"."_selft"具有特殊意义的名称.   _blank:在新窗口显示目标网页   _self:在当前窗口显示目标网页   _top:框架网页中在上部窗口中显示目标网页 3.相同 name 的窗口只能创建一个,要想创建多个窗口则 name 不能相同.   4.name 不能包含有空格. 参数字符串:可选参数,设置窗口参数,各参数用逗

SHOWMODALDIALOG表单提交时禁止打开新窗口

前提条件:showmodaldialog中有表单form.当action="#"的时候,提交表单,不会打开新窗口,但这种#自提有时不能用,#是本页面完整的带参数的url,如果表单中有参数和url中的参数相同,那么提交后,表单中的这个同名参数会被#中的参数覆盖,造成表单中的这个参数无法取得,除非在表单中重新修改name这个参数: 当actiong="本页面.jsp"的时候,提交时,在IE环境中showmodaldialog会打开新的窗口,设置target="

打开新窗口,window.open 和window.showModalDialog

window.open: window.open是非阻态窗口,也叫非模态窗口,也就是说当你打开window.open这个子窗口后,还可以切换去操作父窗口. 一般的格式是这样的: <span style="font-size:14px;"><strong>window.open('page.html', 'newwindow', 'height=100, width=400, top=0, left=0, toolbar=no, menubar=no, scrol

window.open打开新窗口被浏览器拦截的处理方法

一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.location.reload(), 在某些特殊情况下也要用到另外一种新窗口打开的方法,就是window.open(),这个方法有一个问题就是会被基本所有的浏览器所拦截,要收到点击确认打开才可以,这样的体验可以说是非常不友好的~~ 感觉像一个有病毒的程序~~ 所以我们如果一定要用这个方法,但是又不想其被浏览器拦截,