`
hackbomb
  • 浏览: 217270 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

模式对话框

阅读更多

模式对话框在IE下可以使用window.showModalDialog的方法来解决。但是众所周知,FireFox为了支持web标准,在1.1版以后就取消了对模式对话框的支持。即:window.showModalDialog()。
我们先来分析一下实现模式对话框的原理,我们在IE的模式对话框下无论点父窗口的什么地方,focus(焦点)总是回到了子窗口上面。那么在FireFox下我们将focus总是设置在子窗口上不就行了嘛。怎么设置呢?javascript 有一个定时执行函数的操作似乎可以不断地将子窗口设置为focus(我也没有去测试是否可以,就不能说一定可以了),但是我们没有必要这么麻烦,因为只需当用户点击父窗口的时候设置一下就行了,很幸运,FireFox支持window.onclick事件。那么我们一起来动手写一个既支持IE又支持FireFox的"模式对话框"函数:
举例说明:
var DialogWin=null;
function modalWin(url){
    if (window.showModalDialog){
       window.showModalDialog(url,'write',"dialogWidth:500px;dialogHeight:300px");
    } else { 
       var w = window.screen.width;  
       var h = window.screen.height;  
       var winwidth = 500;  
       var winheight = 300;  
       var win = (h - winheight)/2;  
       var winleft = (w- winwidth)/2;  
       window.myAction = this;
       DialogWin = window.open(url, 'write',"top="+win+",left="+winleft+',width=500px,height=300px,modal=yes');
       window.onclick=function (){DialogWin.focus()};
    }
}
function a(){
    alert("不支持鼠标右键行为");
    window.onclick=function (){
        DialogWin.focus()
    };
    return false;
}
document.oncontextmenu=new Function("return a();");

window.onload=function(){
    modalWin("window.php");
}
//在同目录中建立一个window.php文件即可看到效果
 
模式对话框的注意事项:
模式对话框在firefox下应用还不是很成熟,原因是firefox的鼠标右击事件通过 document.oncontextmenu进行捕捉也不能完全实现IE下的效果。还有就是frame下和iframe下的模式对话框应用。还存在一定缺陷。以后进一步改进。
关于IE与Firefox下判断鼠标单击事件的demo
function buttonEnv(event)
{
    alert(event.button)
}
 

 

<body onmousedown="buttonEnv(event);">
IE left 1 right 2<br/>
FF left 0 right 2<br/>

分享到:
评论

相关推荐

    mfc中无模式及模式对话框分析

    ### MFC中无模式及模式对话框分析 在MFC(Microsoft Foundation Classes)框架中,对话框是用户界面设计中的重要组成部分,它们用于提供一种与用户的交互方式,从而收集输入或展示信息。根据对话框是否阻止其他窗口...

    非模式对话框.rar

    与模式对话框不同,模式对话框会在打开时强制用户先完成对话框中的任务才能继续使用应用程序,而非模式对话框则允许用户在对话框打开的同时进行其他界面的互动。这种设计为用户提供了一种更加灵活的工作环境,尤其在...

    mfc模式与非模式对话框例程

    MFC提供了一种高效的方式来创建和管理对话框,分为两种类型:模式对话框(Modal Dialog)和非模式对话框(Modeless Dialog)。 **模式对话框**: 1. **定义**:模式对话框是一种临时窗口,它在显示时会阻止用户与...

    mfc--非模式对话框

    本文将深入探讨如何在Win7环境下,利用Visual Studio 2010和MFC技术将一个基于模式对话框的应用程序改写为非模式对话框。 **一、模式对话框与非模式对话框** 1. **模式对话框**:当模式对话框打开时,用户必须先...

    VisualC++2005CLR--模式非模式对话框的使用--

    ### VisualC++2005CLR -- 模式与非模式对话框的使用 #### 一、概述 在Windows编程中,对话框是用户界面的一个重要组成部分,它们用于收集用户的输入或显示信息。对话框有两种类型:模式对话框和非模式对话框。这两...

    pyqt5 多窗口调用-模式和非模式对话框显示

    首先,我们需要了解什么是模式对话框(Modal Dialog)和非模式对话框(Non-modal Dialog)。模式对话框在显示时会阻塞其父窗口,用户必须先关闭对话框才能继续与主窗口交互。这种方式强制用户处理当前对话框的问题。...

    pyqt5-模式和非模式对话框 mainwindow 和QDialog版

    pyqt5-模式和非模式对话框 mainwindow 和QDialog版 show()非模式对话框,在调用弹出窗口之后,调用即刻返回 exec()模式对话框,就是在弹出窗口的时候,整个程序就被锁定了 业务和ui分离版本

    简单而实用的非模式对话框

    非模式对话框是一种在用户与应用程序交互过程中非常常见的UI元素,尤其在Windows应用程序设计中。在本文中,我们将深入探讨非模式对话框的概念、用途,以及如何在单文档视图中实现点击位置显示功能,这对于初学者来...

    vc6.0 无模式对话框 源码+学习心得

    无模式对话框与模式对话框(Modal Dialog Box)的主要区别在于,模式对话框会阻塞主窗口的操作,直到对话框关闭,而无模式对话框则不会。 无模式对话框的应用广泛,例如设置窗口、帮助窗口等,这些窗口通常在后台...

    模式对话框与无模式对话框的不同

    对话框分为两种主要类型:模式对话框(Modal Dialog)和无模式对话框(Modeless Dialog)。理解这两种对话框的区别对于构建高效、用户体验良好的应用程序至关重要。 **模式对话框** 模式对话框是那些在显示时会阻止...

    Jquery+CSS模式对话框

    **jQuery + CSS 模式对话框详解** 在Web开发中,模式对话框(Modal Dialog)是一种常见的用户交互元素,用于在当前页面上显示一个半透明的遮罩层,焦点集中在一个独立的窗口,用户必须先处理这个对话框才能继续与主...

    WPF开发的个性化模式对话框

    在Windows Presentation Foundation(WPF)中,开发一个具有个性化模式对话框可以极大地提升用户体验和界面美观度。"WPF开发的个性化模式对话框"这个主题着重于如何在应用程序中创建一个能够使背景窗体变灰的模式...

    JQuery 模式对话框实例

    "JQuery 模式对话框实例"是指使用 jQuery 创建的一种特殊的对话框,它在页面上弹出时,会将背景变暗,使用户无法与背景中的其他元素交互,直至对话框关闭。这种模式对话框常用于警告、确认、输入信息等场景。 在 ...

    VC++ 创建 向导模式 对话框

    总之,VC++创建向导模式对话框涉及MFC中的`CPropertySheet`和`CPropertyPage`类,以及相应的事件处理和数据交换机制。通过这种方式,我们可以构建出用户友好的多步骤交互界面,使得用户能够按照指示轻松完成复杂的...

    模式对话框与非模式对话框

    对话框分为两种主要类型:模式对话框(Modal Dialog Box)和非模式对话框(Non-Modal Dialog Box)。这两者在用户交互和应用程序流程上有着显著的区别。 1. **模式对话框** 模式对话框是强制用户与其交互的窗口,...

    JQuery 模式对话框DIV

    **jQuery 模式对话框(Modal Dialog)使用详解** 在Web开发中,模式对话框是一种常用的交互元素,它能够阻止用户与页面其他部分的交互,直到对话框被关闭。jQuery库提供了一种简单的方式来实现这一功能,即jQuery ...

    无模式对话框

    无模式对话框在编程领域,尤其是在使用Microsoft Visual C++ 6.0(简称VC++6.0)开发Windows应用程序时,是一种常见的用户界面元素。它允许用户与对话框进行交互,而不会阻止对主应用程序窗口的操作。对于初学者来说...

    不阻断调用窗体的消息循环模式对话框的实现

    在Windows编程中,模式对话框(Modal Dialog)是一种常见的用户交互方式,它会阻止用户与父窗口进行交互,直到对话框被关闭。然而,有些情况下我们可能希望在显示模式对话框的同时,允许用户继续与主窗口进行有限的...

    模式对话框(可刷新)+可移动div+遮罩层

    在IT界,模式对话框(Modal Dialog)是一种常见的用户界面元素,它用于向用户显示重要信息或要求用户提供输入,同时阻止他们与对话框背后的应用程序交互。这种对话框强制用户处理当前的问题,直到他们完成对话框的...

Global site tag (gtag.js) - Google Analytics