最近项目由于有用到模式窗体,也在Google 了一些资料,在此结合相关资料把自己使用的一些经验给大家分享一下。

我们在使用模式窗体时,经常要用会在模式窗体中提交表单之类,但要是没有处理好就会弹出新的窗体,那要如何处理呢?首先行介绍一下 模式窗体(Window.ShowModalDialog)

一、模式窗体介(Window.ShowModalDialogs)介绍

showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()方法用来创建一个显示HTML内容的模态对话框。
window.showModelessDialog()方法用来创建一个显示HTML内容的非模态对话框。

使用方法: vReturnValue = window.showModalDialog(sURL [, vArguments] [,sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [,sFeatures])

参数说明:
sURL--
必选参数,类型:字符串。用来指定对话框要显示的文档的URL。
vArguments--
可选参数,类型:变体。用来向对话框传递参数。传递的参数类型不限,包括数组等。对话框通过window.dialogArguments来取得传递进来的参数。
sFeatures--
可选参数,类型:字符串。用来描述对话框的外观等信息,可以使用以下的一个或几个,用分号“;”隔开。
1.dialogHeight :对话框高度,不小于100px,IE4中dialogHeight 和 dialogWidth 默认的单位是em,而IE5中是px,为方便其见,在定义modal方式的对话框时,用px做单位。
2.dialogWidth: 对话框宽度。
3.dialogLeft: 离屏幕左的距离。
4.dialogTop: 离屏幕上的距离。
5.center: {yes | no | 1 | 0 }:窗口是否居中,默认yes,但仍可以指定高度和宽度。
6.help: {yes | no | 1 | 0 }:是否显示帮助按钮,默认yes。
7.resizable: {yes | no | 1 | 0 } [IE5+]:是否可被改变大小。默认no。
8.status: {yes | no | 1 | 0 } [IE5+]:是否显示状态栏。默认为yes[ Modeless]或no[Modal]。
9.scroll:{ yes | no | 1 | 0 | on | off }:指明对话框是否显示滚动条。默认为yes。
下面几个属性是用在HTA中的,在一般的网页中一般不使用。
10.dialogHide:{ yes | no | 1 | 0 | on | off }:在打印或者打印预览时对话框是否隐藏。默认为no。
11.edge:{ sunken | raised }:指明对话框的边框样式。默认为raised。
12.unadorned:{ yes | no | 1 | 0 | on | off }:默认为no。

参数传递:
1.要想对话框传递参数,是通过vArguments来进行传递的。类型不限制,对于字符串类型,最大为4096个字符。也可以传递对象,例如:
-------------------------------

parent.htm <script>var obj = new Object();
obj.name
="i5tt";
window.showModalDialog(
"modal.htm",obj,"dialogWidth=200px;dialogHeight=100px");</script>modal.htm<script>var obj = window.dialogArguments
alert(
"您传递的参数为:" + obj.name)</script>

-------------------------------
2.可以通过window.returnValue向打开对话框的窗口返回信息,当然也可以是对象。例如:
------------------------------

parent.htm <script>str =window.showModalDialog("modal.htm",,"dialogWidth=200px;dialogHeight=100px");
alert(str);
</script>modal.htm<script>window.returnValue="http://www.i5tt.com";</script>

二、处理模式窗口中提交不弹出新窗口

第一种方法;

在<head></head>中加<base target="_self" />    并在要点击的按钮上加PostBackUrl="#"  例如:

<html xmlns="http://www.w3.org/1999/xhtml"><head><title> 模式显示窗体 </title></head><base target="_self" /><body><form id="form1" ><div> 窗体 </div></form></body></html>
<a href="javascript:window.showModalDialog('EditClass.aspx?stuclassid=<%# Eval("cniStudentClassId") %>','dialogWidth:500px;dialogHeight:300px;help:no');window.location.href='ClassManager.aspx';">编辑</a>

第二种方法;

新建一个ShowModal页面,在aspx页面中加

<iframe id="MainWindow" width="100%" scrolling="auto" height="100%" runat="server"></iframe>

在aspx.cs页面中加

if (!Page.IsPostBack)
{
string strLinkFlag = Request.QueryString["LinkFlag"].ToString();switch (strLinkFlag)
{
case "NoticeInfo":
strTitle
= "公告信息";
strUrlLink
= "NoticeInfo.aspx?flag=" + Request.QueryString["Flag"].ToString();break;default:break;
}
if (strUrlLink != String.Empty)
{
//添加随机数,防止IE缓存string strRandom = BaseFunction.GetFormatDate();
strUrlLink
+= "&randomnum=" + strRandom;
MainWindow.Attributes.Add(
"src", strUrlLink);
}
}

在弹出窗体的aspx页面中加

<script type="text/jscript" language="javascript">function OpenEditWin(frmWin,width,height)
{
var me;
// 把父页面窗口对象当作参数传递到对话框中,以便对话框操纵父页自动刷新。me = window;// 显示对话框。window.showModalDialog(frmWin,me,'dialogWidth='+width +'px;dialogHeight='+height+'px;help:no;status:no')return false;
}
</script>

aspx.cs页面中:

//用模态对话框弹出公告信息页面showForm = "ShowModelPage.aspx?linkFlag=NoticeInfo&Flag=" + noticeID;
lnkTitle.Attributes.Add(
"onclick", "javascript:return OpenEditWin('" + showForm + "',600,500)");

转载于:https://www.cnblogs.com/waren168/archive/2011/07/12/2104484.html

模式窗口(Window.ShowModalDialogs)中提交不弹出新窗口相关推荐

  1. python点击按钮弹出新窗口_PyQt5点击button如何弹出新窗口?

    怎么通过点击button,来打开一个新的窗口? 是写在同一个脚本里,还是把新窗口的代码放在另一个脚本里,然后通过点击按钮来运行? import sys from PyQt5.QtWidgets imp ...

  2. window.open浏览器弹出新窗口被拦截—原因分析和解决方案

    最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,在本机实验没问题,到了服务器就被拦截了,火狐有拦截提示,360浏览器拦截提示都没有,虽然在自己的环境可以对页面进行放行,但是对用户 ...

  3. html弹窗页面控制大小,使用JS弹出新窗口,并设置窗口的大小和位置等相关属性,传递参数...

    使用JS弹出新窗口,同时向弹出的页面传递一个参数. 首先,使用JS获取需要传递的参数.然后将参数传入心得页面. window.open 弹出新窗口的命令: page.html 弹出新窗口的文件名: n ...

  4. 在showModalDialog和showModelessDialog中提交form时不弹出新窗口

    在showModalDialog和showModelessDialog中提交form时不弹出新窗口 方法一: 在弹出的页面head部分加上<base target="_self&quo ...

  5. Angular2项目中浏览器拦截弹出窗口的解决方法

    Angular2项目中浏览器拦截弹出窗口的解决方法 为什么把项目是Angular2的放到了前边? 因为正常也页面网上已经很多解决方案.请自行百度或Google. 现象:当window.open为用户触 ...

  6. 如何在WordPress中创建优惠券弹出窗口(逐步)

    Do you want to create a coupon popup in WordPress? Coupon popups are a great way to convert your web ...

  7. win7系统老是弹窗怎么解决_如何解决win7系统中打开文件夹老是弹出新窗口的问题...

    在win7系统中,一般我们在打开某个文件夹时,都是在同一个窗口显示,查看非常方便,但是有的小伙伴却遇到了每次打开文件夹都会弹出新窗口的问题,那么这个时候应该怎么办呢?下面小编就给大家分享一下win7系 ...

  8. 如何点击按钮弹出新窗口,输入数据后返回并刷新页面

    如何点击按钮弹出新窗口,输入数据后返回并刷新页面? 作者:孟宪会 出自:[孟宪会之精彩世界] 发布日期:2003年7月8日 4点0分13秒 在一些.NET论坛中有人经常会问:如何在页面中点击按钮打开新 ...

  9. 自动弹窗被拦截 html,解决JS弹出新窗口被浏览器阻止的解决方案

    本文转载自:http://blog.csdn.net/cntanghai/article/details/6643522 在js中通过open弹出窗口可能会被阻止,我尝试这段代码: var flag ...

  10. MFC基于对话框上插入MENU菜单栏并点击菜单弹出新窗口

    一.创建基于对话框的应用程序框架 1.选择菜单项文件->新建->项目,弹出"新建项目"对话框. 2.直接选择"MFC应用程序"或左侧面板中模板的Vi ...

最新文章

  1. group by总结(还有having)
  2. 十三、limit 的使用
  3. DROP TABLE、TRUNCATE TABLE和DELETE的区别
  4. java转net_将java库转换为.net库
  5. eclipse光标变成黑块变粗解决办法
  6. python中order函数_order by排序
  7. 常用的后端命令 【笔记】
  8. 喜欢的数字:使用一个字典来_数字证书:何时何地使用它们
  9. mysql for update死锁_Mysql 数据库死锁过程分析(select for update)
  10. 一线大厂软件测试流程(思维导图)详解
  11. 1080i和1080p区别
  12. ubuntu18.04突然关机重启后显卡驱动失效
  13. python 本地音乐播放器制作过程
  14. 胡爱玲医生论中医治疗荨麻疹的优势和理念
  15. android中如何保存对象集合中,如何序列化对象并将其保存到Android中的文件?
  16. 极路由——彻底凉了,云插件服务都关闭了,还没root的抓紧了
  17. 微信小程序的开发:通过微信小程序看前端
  18. Git命令问题:Found a swap file by the name “.git/.MERGE_MSG.swp”
  19. 时代周刊对比海地与汶川地震 称赞中国重建能力
  20. 干眼症产品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 同态加密 应用案例 入门
  2. mysql修改主键为unique_mysql 如何修改、添加、删除表主键及unique约束
  3. php 字符转ansi,php 字符编码转换类,支持ANSI、Unicode、Unicode big endian、UTF-8、UTF-8+Bom 互相转换...
  4. Java实现斐波那契数列的两种方法
  5. Leetcode之通配符匹配
  6. html实现圆形计时器特效,js css3圆形的时分秒计时器动画特效
  7. javscript DOM基础知识(常用篇)
  8. 洛谷P2580 于是他错误的点名开始了 题解
  9. Gym - 100623J Just Too Lucky (数位dp)
  10. bzoj4754: [Jsoi2016]独特的树叶