热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

php网页小弹窗提示,个性化网页小弹窗

看到论坛上有人模仿alert,自己也写了一个。本来想模仿winapi里的MessageBox但可惜js不支持,阻塞模式。返回值只能用异步了。支持FF、i

看到论坛上有人模仿alert,自己也写了一个。

本来想模仿winapi里的MessageBox

但可惜js 不支持,阻塞模式。

返回值只能用异步了。

支持FF、ie、opera。

DOCTYPE 可以申明,也可以不申明。

MessageBox演示

/*******************************************************************************************

* http://2lin.net

* Email:caoailin@gmail.com

* QQ:38062022

* Creation date: 2006-11-27

* 下面的内容可以拷贝到一个JS文件里面

*********************************************************************************************/

// 控制按钮常量

var MB_OK = 0;

var MB_CANCEL = 1;

var MB_OKCANCEL = 2;

var MB_YES = 3;

var MB_NO = 4;

var MB_YESNO = 5;

var MB_YESNOCANCEL = 6;

// 控制按钮文本

var MB_OK_TEXT = "确定";

var MB_CANCEL_TEXT = "取消";

var MB_YES_TEXT = " 是 ";

var MB_NO_TEXT = " 否 ";

//提示图标

var MB_ICON = "http://www.cnn6.net??/files/080516/1_011452.gif";

//委托方法

var MB_OK_METHOD = null;

var MB_CANCEL_METHOD = null;

var MB_YES_METHOD = null;

var MB_NO_METHOD = null;

var MB_BACKCALL = null;

var MB_STR = '

'body{margin:0px;}' +

'.msgbox_title{background-color: #B1CDF3;height:25px;position:relative;font-size:14px;line-height:25px;padding-left:10px;border-bottom:1px solid #000;}' +

'.msgbox_control{text-align:center;clear:both;height:28px;}' +

'.msgbox_button{background-color: #B1CDF3;border:1px solid #003366;font-size:12px;line-height:20px;height:21px;}' +

'.msgbox_content{padding:10px;float:left;line-height: 20px;}' +

'.msgbox_icon{width: 50px;height: 50px;float: left;text-align: center;line-height:50px;padding-top:10px;}' +

'.msgbox_mask{position:absolute;left:0px;top:0px;z-index:99999;background-color:#333333;width:100%;height:100%;}' +

'.msgbox{background-color: #EFFAFE;position: absolute;height:auto;font-size:12px;top:50%;left:50%;border:1px solid #999999;}' +

'-->' +

'

'

' +

'

'

'

'

';

var Timer = null;

document.write(MB_STR);

var icon = new Image();

icon.src = MB_ICON;

/* 提示对话框

* 参数 1 : 提示内容

* 参数 2 : 提示标题

* 参数 3 : 图标路径

* 参数 4 : 按钮类型

*/

function MessageBox(){

var _content = arguments[0] || "这是一个对话框!";

var _title = arguments[1] || "提示";

var _icon = arguments[2] || MB_ICON;

var _button = arguments[3] || MB_OK;

MB_BACKCALL = arguments[4];

var _iconStr = '%7B0%7D';

var _btnStr = '';

switch(_button)

{

case MB_CANCEL : _btnStr = _btnStr.toFormatString("msgBoxBtnCancel", MB_CANCEL_TEXT); break;

case MB_YES : _btnStr = _btnStr.toFormatString("msgBoxBtnYes", MB_YES_TEXT); break;

case MB_NO : _btnStr = _btnStr.toFormatString("msgBoxBtnNo", MB_NO_TEXT); break;

case MB_OKCANCEL :

_btnStr = _btnStr.toFormatString("msgBoxBtnOk", MB_OK_TEXT) + "  " +

_btnStr.toFormatString("msgBoxBtnCancel", MB_CANCEL_TEXT);

break;

case MB_YESNO :

_btnStr = _btnStr.toFormatString("msgBoxBtnYes", MB_YES_TEXT) + "  " +

_btnStr.toFormatString("msgBoxBtnNo", MB_NO_TEXT);

break;

case MB_YESNOCANCEL :

_btnStr = _btnStr.toFormatString("msgBoxBtnYes", MB_YES_TEXT) + "  " +

_btnStr.toFormatString("msgBoxBtnNo", MB_NO_TEXT) + "  " +

_btnStr.toFormatString("msgBoxBtnCancel", MB_CANCEL_TEXT);

break;

default : _btnStr = _btnStr.toFormatString("msgBoxBtnOk", MB_OK_TEXT); break;

}

//解决 FF 下会复位

ScrollTop = GetBrowserDocument().scrollTop;

ScrollLeft = GetBrowserDocument().scrollLeft;

GetBrowserDocument().style.overflow = "hidden";

GetBrowserDocument().scrollTop = ScrollTop;

GetBrowserDocument().scrollLeft = ScrollLeft;

$("msgBoxTitle").innerHTML = _title;

$("msgBoxIcon").innerHTML = _iconStr.toFormatString(_icon);

$("msgBoxContent").innerHTML = _content;

$("msgBoxControl").innerHTML = _btnStr;

OpacityValue = 0;

$("msgBox").style.display = "";

try{$("msgBoxMask").filters("alpha").opacity = 0;}catch(e){};

$("msgBoxMask").style.opacity = 0;

$("msgBoxMask").style.display = "";

$("msgBoxMask").style.height = GetBrowserDocument().scrollHeight + "px";

$("msgBoxMask").style.width = GetBrowserDocument().scrollWidth + "px";

Timer = setInterval("DoAlpha()",1);

//设置位置

$("msgBox").style.width = "100%";

$("msgBox").style.width = ($("msgBoxIcon").offsetWidth + $("msgBoxContent").offsetWidth + 2) + "px";

$("msgBox").style.marginTop = (-$("msgBox").offsetHeight/2 + GetBrowserDocument().scrollTop) + "px";

$("msgBox").style.marginLeft = (-$("msgBox").offsetWidth/2 + GetBrowserDocument().scrollLeft) + "px";

if(_button == MB_OK || _button == MB_OKCANCEL){

$("msgBoxBtnOk").focus();

}else if(_button == MB_YES || _button == MB_YESNO || _button == MB_YESNOCANCEL){

$("msgBoxBtnYes").focus();

}

}

var OpacityValue = 0;

var ScrollTop = 0;

var ScrollLeft = 0;

function GetBrowserDocument()

{

var _dcw = document.documentElement.clientHeight;

var _dow = document.documentElement.offsetHeight;

var _bcw = document.body.clientHeight;

var _bow = document.body.offsetHeight;

if(_dcw == 0) return document.body;

if(_dcw == _dow) return document.documentElement;

if(_bcw == _bow && _dcw != 0)

return document.documentElement;

else

return document.body;

}

function SetOpacity(obj,opacity){

if(opacity >=1 ) opacity = opacity / 100;

try{obj.style.opacity = opacity; }catch(e){}

try{

if(obj.filters){

obj.filters("alpha").opacity = opacity * 100;

}

}catch(e){}

}

function DoAlpha(){

if (OpacityValue > 20){clearInterval(Timer);return 0;}

OpacityValue += 5;

SetOpacity($("msgBoxMask"),OpacityValue);

}

function MBMethod(obj)

{

switch(obj.id)

{

case "msgBoxBtnOk" : if(MB_BACKCALL) {MB_BACKCALL(MB_OK);} else {if(MB_OK_METHOD) MB_OK_METHOD();} break;

case "msgBoxBtnCancel" : if(MB_BACKCALL) {MB_BACKCALL(MB_CANCEL);} else {if(MB_CANCEL_METHOD) MB_CANCEL_METHOD();} break;

case "msgBoxBtnYes" : if(MB_BACKCALL) {MB_BACKCALL(MB_YES);} else {if(MB_YES_METHOD) MB_YES_METHOD();} break;

case "msgBoxBtnNo" : if(MB_BACKCALL) {MB_BACKCALL(MB_NO);} else {if(MB_NO_METHOD) MB_NO_METHOD();} break;

}

MB_OK_METHOD = null;

MB_CANCEL_METHOD = null;

MB_YES_METHOD = null;

MB_NO_METHOD = null;

MB_BACKCALL = null;

MB_OK_TEXT = "确定";

MB_CANCEL_TEXT = "取消";

MB_YES_TEXT = " 是 ";

MB_NO_TEXT = " 否 ";

$("msgBox").style.display = "none";

$("msgBoxMask").style.display = "none";

GetBrowserDocument().style.overflow = "";

GetBrowserDocument().scrollTop = ScrollTop;

GetBrowserDocument().scrollLeft = ScrollLeft;

}

String.prototype.toFormatString = function(){

var _str = this;

for(var i = 0; i

_str = eval("_str.replace(/\\{"+ i +"\\}/ig,'" + arguments[i] + "')");

}

return _str;

}

function $(obj){

return document.getElementById(obj);

}

///

function test()

{

var _msg = "演示:
普通对话框!";

MessageBox(_msg);

}

function test1()

{

MB_OK_METHOD = function(){alert('你按了OK');}

MB_YES_METHOD = function(){alert('你按了YES');}

MB_NO_METHOD = function(){alert('你按了NO');}

MB_CANCEL_METHOD = function(){alert('你按了CANCEL');}

var _msg = "演示:
调用对话框。是、否、取消";

MessageBox(_msg,"演示",null,MB_YESNOCANCEL);

}

function test2()

{

var _msg = "演示:
调用对话框。是、否、取消";

MessageBox(_msg,"演示",MB_ICON,MB_YESNOCANCEL,callback);

}

function test4()

{

var _msg = "演示:
调用对话框。确定、取消";

MessageBox(_msg,"演示",MB_ICON,MB_OKCANCEL,callback);

}

function callback(value)

{

switch(value)

{

case MB_OK : alert('你按了OK'); break;

case MB_YES : alert('你按了YES'); break;

case MB_NO : alert('你按了NO'); break;

case MB_CANCEL : alert('你按了CANCEL'); break;

}

}

function test3()

{

MB_YES_TEXT = "演示一";

MB_NO_TEXT = "演示二";

MB_CANCEL_TEXT = "演示三";

var _msg = "演示:
这是自定义的对话框MB_YES_TEXT MB_NO_TEXT MB_CANCEL_TEXT MB_OK_TEXT";

MessageBox(_msg,"演示",MB_ICON,MB_YESNOCANCEL,callback);

}

 普通演示 
 回调演示一 
 回调演示二 
 回调演示三 
 自定义演示 



推荐阅读
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • PHP中的单例模式与静态变量的区别及使用方法
    本文介绍了PHP中的单例模式与静态变量的区别及使用方法。在PHP中,静态变量的存活周期仅仅是每次PHP的会话周期,与Java、C++不同。静态变量在PHP中的作用域仅限于当前文件内,在函数或类中可以传递变量。本文还通过示例代码解释了静态变量在函数和类中的使用方法,并说明了静态变量的生命周期与结构体的生命周期相关联。同时,本文还介绍了静态变量在类中的使用方法,并通过示例代码展示了如何在类中使用静态变量。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
  • Ihaveaworkfolderdirectory.我有一个工作文件夹目录。holderDir.glob(*)>holder[ProjectOne, ... [详细]
  • 本文总结了在编写JS代码时,不同浏览器间的兼容性差异,并提供了相应的解决方法。其中包括阻止默认事件的代码示例和猎取兄弟节点的函数。这些方法可以帮助开发者在不同浏览器上实现一致的功能。 ... [详细]
  • 从批量eml文件中提取附件的Python代码实现方法
    本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。 ... [详细]
author-avatar
呜呀003_581
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有