`
suliuyes
  • 浏览: 93678 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

模态窗口 javascript 技巧汇总(传值、打开、刷新)

 
阅读更多

1、要弹出的页面中,一定要保证<head></head>标签间有<base target=“_self”>,否则会弹出的模态窗口上,点击按钮时,会再次弹出一个新页面。
2、被弹出页面的按钮的事件处理中,应该有Response.Write(new Function().ClosePage());语句,用以关闭当前的模态窗口。
3、 因为幽默的缓存原因,如果你在模态窗口中修改了数据,你会发现,父页面上的数据刷新了,但是当你再点击按钮,重新弹出模态窗口时,你会发现模态窗口中的内 容还是上次的内容,经过我试验,手动改了html代码后,点击弹出的模态窗口还是弹出相同的页面,所以,这里要绕开这个机制,方法是在被弹出的aspx页 面后加上随机参数。上面模态窗口代码可以改成如下,以避免此问题:
      public string ModalWindow(string openAspxPage,int width,int height)
      {
               string js = string.Format("javascript:window.showModalDialog(\"{0}&rand ="+new Random().Next().ToString()+ "\",window,\"status:false;dialogWidth:{1}px;dialogHeight:{2}px\")",openAspxPage,width,height);
              return js;
      }
      注意红字部分参数,是自定义的一个参数,此参数应该是整个项目中唯一的变更名称,并且无意义(最保险的办法是把这个变更命名为lakjsdflawdfqwoifa之类的名称)。
      基本上,满足了上述条件,做页面时就操作模态窗口,相对就简单了。

//-------------------------------------------------------------------------------------------------------------

模 态窗口——有时会让你觉得很好用的一个东西2006-10-20 11:54关于showModalDialog和showModelessDialog的使用,一个b/s结构的项目中用window.open弹出的窗 口被一些广告拦截工具给拦截了,没办法就只能用showModalDialog来解决问题,但showModalDialog这个方法不好的就是页面间传 值太麻烦(传值有两种方法),可是实在没其他的办法来解决这个拦截问题,只有用这个了。代码到是两下就写好了,但调试代码的时候发现一个问题,用 showModalDialog弹出的窗口中的内容一直是第一次访问页面时显示的内容,开始就怀疑是窗体调用的页面缓存,最后通过单步跟踪调试也证明了问 题确实是读取的页面缓存,这说明了在asp.net中用showModalDialog和showModelessDialog做弹出窗体时最好在 page_load事件加上 Response.Expires = 0;
Response.Cache.SetNoStore();
 Response.AppendHeader("Pragma", "no-cache");
来清除缓存。用asp,php,js,vbscript测试使用showModalDialog方法没有出现需要清除缓存的情况,大家可以放心使用,关于showModalDialog的时候可以参见下面我找到的详细介绍

showModalDialog和showModelessDialog使用心得

一、showModalDialog和showModelessDialog有什么不同?
  showModalDialog:被打开后就会始终保持输入焦点。除非对话框被关闭,否则用户无法切换到主窗口。类似alert的运行效果。
  showModelessDialog:被打开后,用户可以随机切换输入焦点。对主窗口没有任何影响(最多是被挡住一下而以。:P)

二、怎样才让在showModalDialog和showModelessDialog的超连接不弹出新窗口?
  在被打开的网页里加上<base target="_self">就可以了。这句话一般是放在<html>和<body>之间的。

三、怎样才刷新showModalDialog和showModelessDialog里的内容?
  在showModalDialog和showModelessDialog里是不能按F5刷新的,又不能弹出菜单。这个只能依靠javascript了,以下是相关代码:

<body onkeydown="if (event.keyCode==116){reload.click()}">
<a id="reload" href="filename.htm" style="display:none">reload...</a>

  将filename.htm替换成网页的名字然后将它放到你打开的网页里,按F5就可以刷新了,注意,这个要配合<base target="_self">使用,不然你按下F5会弹出新窗口的。

注意:如果想当访问的时候自动刷新,可以在被打开得页面,设置一个记录变量,当被打开模态窗口得时候,变量至1,然后使用上述方法刷新模态窗口,当关闭窗口得时候,变量至0.

四、如何用javascript关掉showModalDialog(或showModelessDialog)打开的窗口。
  <input type="button" value="关闭" onclick="window.close()">
  也要配合<base target="_self">,不然会打开一个新的IE窗口,然后再关掉的。

五、showModalDialog和showModelessDialog数据传递技巧。
  例子:
    现在需要在一个showModalDialog(或showModelessDialog)里读取或设置一个变量var_name

      一般的传递方式:
        window.showModalDialog("filename.htm",var_name)
        //传递var_name变量
      在showModalDialog(或showModelessDialog)读取和设置时:
        alert(window.dialogArguments)//读取var_name变量
        window.dialogArguments="oyiboy"//设置var_name变量
    这种方式是可以满足的,但是当你想在操作var_name同时再操作第二个变理var_id时呢?就无法再进行操作了。这就是这种传递方式的局限性。
    
      以下是我建议使用的传递方式:
        window.showModalDialog("filename.htm",window)
        //不管要操作什么变量,只直传递主窗口的window对象
      在showModalDialog(或showModelessDialog)读取和设置时:
        alert(window.dialogArguments.var_name)//读取var_name变量
        window.dialogArguments.var_name="oyiboy"//设置var_name变量

        同时我也可以操作var_id变量
        alert(window.dialogArguments.var_id)//读取var_id变量
        window.dialogArguments.var_id="001"//设置var_id变量

        同样还可以对主窗口的任何对象进行操作,如form对象里的元素。
        window.dialogArguments.form1.index1.value="这是在设置index1元素的值"

     在弹出窗口中返回值:window.returnValue = ... ;

六、多个showModelessDialog的相互操作。

  以下代码的主要作用是在一个showModelessDialog里移动别一个showModelessDialog的位置。

  主文件的部份js代码。
  var s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px") //打开控制窗口
  var s2=showModelessDialog('about:blank',window,"dialogTop:200px;dialogLeft:300px")  //打开被控制窗口

  控制.htm的部份代码。
  <script>
    //操作位置数据,因为窗口的位置数据是"xxxpx"方式的,所以需要这样的一个特殊操作函数。
 function countNumber(A_strNumber,A_strWhatdo)
 {
  A_strNumber=A_strNumber.replace('px','')
  A_strNumber-=0
  switch(A_strWhatdo)
  {
  case "-":A_strNumber-=10;break;
  case "+":A_strNumber+=10;break;
  }
  return A_strNumber + "px"
 }
  </script>
   <input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,'-')" value="上移">
  <input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,'-')" value="左移">
  <input type="button" onclick="window.dialogArguments.s2.dialogLeft=countNumber(window.dialogArguments.s2.dialogLeft,'+')" value="右移">
  <input type="button" onclick="window.dialogArguments.s2.dialogTop=countNumber(window.dialogArguments.s2.dialogTop,'+')" value="下移">

  以上关键部份是:
    窗口命名方式:var s1=showModelessDialog('控制.htm',window,"dialogTop:1px;dialogLeft:1px")
    变量访问方式:window.dialogArguments.s2.dialogTop

  这个例子只是现实showModelessDialog与showModelessDialog之间的位置操作功能,通过这个原理,在showModelessDialog之间相互控制各自的显示页面,传递变量和数据等。这要看各位的发挥了。

 

====================================================================

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。

分享到:
评论

相关推荐

    模态窗口页的传值模态窗口页的传值

    - 在打开模态窗口时,可以通过JavaScript函数传递参数给模态窗口的内容部分。 - 数据可以存储在全局变量、局部变量、HTML数据属性(data attributes)或者使用事件监听器传递。 3. **使用HTML5 data attributes...

    模态窗口传值www.bbssa.com

    - JavaScript变量:将值存储在JavaScript变量中,然后在打开模态窗口时将其赋值给相应元素。 例如,假设我们有一个按钮,点击后弹出模态窗口,并显示传递的文本: ```javascript let modalText = '这是传递的数据...

    js中用open方式打开新窗口向父窗口传值

    在JavaScript中,使用`window.open()`方法可以打开一个新的浏览器窗口,这个方法可以实现子窗口向父窗口传值的操作。下面我们来详细解释这个过程。 首先,让我们回顾一下`window.open()`方法的基本用法。`window....

    分页后弹出模态窗口刷新父窗口

    根据给定文件的信息,本文将围绕“分页后弹出模态窗口刷新父窗口”的主题进行深入探讨。此话题主要涉及前端开发中的交互设计、页面更新机制以及如何在不同的页面间进行数据同步等内容。 ### 一、理解分页与模态窗口...

    javascript 父窗口、子窗口传值问题

    在JavaScript编程中,父窗口与子窗口之间的通信是一种常见的需求,特别是在构建多窗口应用程序或弹出窗口时。本文将深入探讨如何在JavaScript中实现父窗口与子窗口之间的数据传递。 首先,我们需要理解“父窗口”和...

    easyui 模态窗口插件

    然后在打开模态窗口时应用这个类: ```javascript $('#dlg').dialog('open').addClass('local-modal'); ``` 在 `demo_modelwindow` 文件夹中,你可能找到包含上述示例的 HTML、CSS 和 JavaScript 文件,用于演示...

    模态窗口关闭时刷新父页面js文件

    当我们需要在用户关闭模态窗口后刷新其父页面时,JavaScript(简称js)提供了解决方案。 在JavaScript中,我们可以利用事件监听来处理模态窗口关闭的事件。首先,我们需要在模态窗口上设置一个关闭按钮,并为其添加...

    5个Jquery模态窗口

    jQuery模态窗口通常通过CSS控制样式,JavaScript处理事件和行为来实现。基本思路是在页面上创建一个隐藏的div(模态窗口),当需要弹出时,通过改变其CSS属性使其可见,并添加必要的遮罩层,以阻止用户与背景内容的...

    JS 模态对话框和非模态对话框操作技巧汇总

    模态窗口 javascript 技巧汇总(传值、打开、刷新) 1、要弹出的页面中,一定要保证&lt;head&gt;&lt;/head&gt;标签间有&lt;base target=“_self”&gt;,否则会弹出的模态窗口上,点击按钮时,会再次弹出一个新页面。...

    jquery 模态窗口

    jQuery,一个广泛使用的JavaScript库,提供了方便的方式来创建和操作模态窗口。这个主题将深入探讨jQuery实现模态窗口的基本原理、方法和最佳实践。 ### 1. 基本概念 模态窗口,又称对话框,是一种用户界面元素,...

    javascript页面之间传值

    在JavaScript编程中,页面间传值是一个常见的需求,特别是在构建多窗口或框架的应用时。本实例将探讨如何在父窗口与子窗口之间有效地传递数据,以及两种实现这一目标的方法。 第一种方法是通过`window.open()`函数...

    层实现模态窗口(div)

    打开模态窗口 ``` 然后,在JavaScript中添加事件监听器: ```javascript document.getElementById('openModal').addEventListener('click', function() { document.getElementById('myModal').style.display ...

    模态窗口demo及说明

    本文将深入探讨如何使用JavaScript创建模态窗口,并通过具体的代码示例来解释各种相关方法和属性。 #### 二、模态窗口的基础概念 模态窗口(Modal Window)是一种弹出式窗口,当其出现时会阻止用户与背后的应用...

    模态窗口实例

    JavaScript库如jQuery、Bootstrap等提供了便捷的模态窗口API,使得开发者可以快速构建功能丰富的模态窗口。 一、JavaScript模态窗口基础 1. DOM操作:创建模态窗口的HTML结构,通常包括一个隐藏的模态元素(如div...

    19种漂亮的模态窗口效果

    在这个项目中,jQuery被用来触发模态窗口的打开和关闭,以及可能包含的其他交互功能,如滑动、淡入淡出、缩放等过渡效果。 模态窗口的设计通常包括以下几个关键组成部分: 1. 触发器:这是用户点击以显示模态窗口...

    js弹出模态窗口

    模态窗口的打开和关闭可以通过这些事件触发,同时还可以添加验证逻辑,确保用户在关闭前完成必要的操作。 5. **DOM操作**:为了动态地修改HTML文档,我们需要了解如何使用DOM(Document Object Model)。JS提供了`...

    js实现图表及模态窗口

    在JavaScript的世界里,实现图表和模态窗口是两个常见的任务,它们在网页交互和数据可视化中扮演着重要的角色。下面将分别对这两个知识点进行详细阐述。 首先,让我们深入了解一下**js实现图表**。在Web开发中,...

    使用layer模态框给新页面传值的方法

    Layer是一款流行的JavaScript弹层组件,它提供了丰富的弹出窗口功能,包括模态框。本文将详细介绍如何使用Layer模态框给新页面传值。 首先,我们需要了解Layer的基本使用方法。Layer模态框的创建通常通过`layer....

    可拖拽的谷歌样式纯javascript模态窗口插件

    本文将深入探讨“可拖拽的谷歌样式纯javascript模态窗口插件”的相关知识点。 首先,让我们了解什么是模态窗口。模态窗口(Modal Window)在网页上表现为一个覆盖在主页面上的半透明层,通常包含一些特定的信息或...

    html 模态窗口子窗体调用父窗体的任何函数

    模态窗口通常用于确认操作、输入数据或者显示详细信息等场景。在【标题】"html 模态窗口子窗体调用父窗体的任何函数"中,我们将探讨如何在模态子窗口中实现对父窗口功能的调用。 模态子窗口通常由JavaScript或者...

Global site tag (gtag.js) - Google Analytics