当前位置: 首页 > 编程日记 > 正文

JS重写提示框(confirm)

<script language="javascript">

/**
* 功能:显示提示窗口
* 作者:申楠 qq:38371354 email:amushen1@yahoo.com.cn http;//amushen.cnblogs.com
* 日期:2005-10-26
* 版本:1.1
* 备注:版权没有,随便拷贝,如果用于商业应用请通知本人,同时保留这段注释。
*
*/
/**
* 改造:黑旋风 QQ:23929003 email:lewclear97@163.com
* 日期:2006-03-17
* 版本:1.2
* 说明:本人在申楠同志的《显示提示窗口》基础上,将
*/

var alternateFrame=null;//生成的iframe
var alternateWin=null;

window.alert=showAlert;
window.confirm=showConfirm;

/**
* 人机交互窗口,覆盖自带的
*/
function alternateWindow(){
this.win=null;//生成对话框的窗口对象
this.pBody=null;//生成的body容器对象
this.pBg=null;
this.type="alert";//默认的种类是alert
this.FocusWhere="OK";//焦点在哪个按钮上
}
/**
* 模仿的alert窗口
*/
function showAlert(info){
alternateWin=new alternateWindow();
var pBody = alternateWin.init();
alternateWin.initAlertBody(pBody,info);
alternateWin.type="alert";
}
/**
* 模仿的alert窗口
*/
function showConfirm(info,ok_func,notok_func,ok_str,not_okstr){
alternateWin=new alternateWindow();
var pBody = alternateWin.init();
alternateWin.initConfirmBody(pBody,info,ok_func,notok_func,ok_str,not_okstr);
alternateWin.type="confirm";
}
/**
* 作用:初始基本信息
*/
alternateWindow.prototype.init=function() {
if(alternateFrame==null){
alternateFrame=document.createElement("<iframe allowTransparency='true' id='popframe' frameborder=0 marginheight=0 src='about:blank' marginwidth=0 hspace=0 vspace=0 scrolling=no></iframe>")
alternateFrame.style.position="absolute";
document.body.appendChild(alternateFrame);
}else{
alternateFrame.style.visibility="visible";
}
alternateFrame.style.width=screen.availWidth;
alternateFrame.style.height=screen.availHeight;
alternateFrame.style.left=document.body.scrollLeft;
alternateFrame.style.top=document.body.scrollTop;
alternateFrame.name=alternateFrame.uniqueID;

this.win=window.frames[alternateFrame.name];
this.win.document.write("<body leftmargin=0 topmargin=0 οncοntextmenu='self.event.returnValue=false'><div id=popbg></div><div id=popbody></div><div></div></body>");
this.win.document.body.style.backgroundColor="transparent";
document.body.style.overflow="hidden";
this.pBody=this.win.document.body.children[1];
this.pBg=this.win.document.body.children[0];
this.hideAllSelect();
this.initBg();

return this.pBody;
}

/**
* 作用:初始化背景层
*/
alternateWindow.prototype.initBg=function(){
with(this.pBg.style){
position="absolute";
left="0";
top="0";
width="100%";
height="100%";
visibility="hidden";
backgroundColor="#333333";
filter="blendTrans(duration=1) alpha(opacity=30)";
}
this.pBg.filters.blendTrans.apply();
this.pBg.style.visibility="visible";
this.pBg.filters.blendTrans.play();
}
/**
* 作用:初始化显示层
*/
alternateWindow.prototype.initAlertBody=function(obj,info){
with(obj.style){
position="absolute";
width="400";
height="150";
backgroundColor="#ffffff";
}
obj.style.left=window.document.body.clientWidth/2-200;
obj.style.top=window.document.body.clientHeight/3;
var str;
str ="<table border=0 cellpadding=0 cellspacing=1 bgcolor=#000000 width=100% height=100%><tr height=30>";
str+="<td align=left style='color:#000000;font-size:14px;font-weight:bold' bgcolor=#9999ff>[提示]</td></tr>";
str+="<tr><td align=center bgcolor=#efefff style='font-size:12px;color:#000000;vertical-align: middle;'>";
str+=info+"</td></tr><tr height=30 bgcolor=#efefef><td align=center>" +
     "<input type='button' value='确定' id='OK'" +
     " οnkeydοwn='parent.alternateWin.onKeyDown(event,this)'"+
     " οnclick='parent.alternateWin.closeWin()' style='border:solid 1px #666666;background:#cccccc'>" +
     "</td></tr></table>";
obj.innerHTML=str;
this.win.document.body.all.OK.focus();
this.FocusWhere="OK";
}

alternateWindow.prototype.onKeyDown=function(event,obj){
switch(event.keyCode){
case 9:
   event.keyCode=-1;
if(this.type=="confirm"){
if(this.FocusWhere=="OK"){
this.win.document.body.all.NO.focus();
this.FocusWhere="NO";
}else{
this.win.document.body.all.OK.focus();
this.FocusWhere="OK";
}
}
break;
case 13:obj.click();;break;
case 27:this.closeWin();break;
}

}
/**
* 作用:初始化显示层 conFirm提示层
*/
alternateWindow.prototype.initConfirmBody=function(obj,info,ok_func,notok_func,ok_str,notok_str){
with(obj.style){
position="absolute";
width="400";
height="150";
backgroundColor="#ffffff";
}
if(ok_str==null){
ok_str="确定";
}
if(notok_str==null){
notok_str="取消"
}
obj.style.left=window.document.body.clientWidth/2-200;
obj.style.top=window.document.body.clientHeight/3;
var str;
str="<table border=0 cellpadding=0 cellspacing=1 bgcolor=#000000 width=100% height=100%><tr height=30>";
str+="<td align=left style='color:#000000;font-size:14px;font-weight:bold' bgcolor=#9999ff>[询问]</td></tr>";
str+="<tr><td align=center bgcolor=#efefff style='font-size:12px;color:#000000;vertical-align: middle;'>";
str+=info+"</td></tr><tr height=30 bgcolor=#efefef><td align=center>" +
"<input type='button' id='OK'" +
" οnkeydοwn='parent.alternateWin.onKeyDown(event,this)'"+
" οnclick='parent.alternateWin.closeWin();parent."+ok_func+"();' " +
" value='"+ok_str+"' style='border:solid 1px #666666;background:#cccccc'>"+
"&nbsp;&nbsp;&nbsp;<input type='button' value='"+notok_str+"' id='NO'"+
" οnkeydοwn='parent.alternateWin.onKeyDown(event,this)'"+
" οnclick='parent.alternateWin.closeWin();" +
" parent."+notok_func+"();' style='border:solid 1px #666666;background:#cccccc'></td></tr></table>";
obj.innerHTML=str;
this.win.document.body.all.OK.focus();
}

/**
* 作用:关闭一切
*/
alternateWindow.prototype.closeWin=function(){
alternateFrame.style.visibility="hidden";
this.showAllSelect();
document.body.style.overflow="auto";
}
/**
* 作用:隐藏所有的select
*/
alternateWindow.prototype.hideAllSelect=function(){
var obj;
obj=document.getElementsByTagName("SELECT");
var i;
for(i=0;i<obj.length;i++)
obj[i].style.visibility="hidden";
}
/**
* 显示所有的select
*/
alternateWindow.prototype.showAllSelect=function(){
var obj;
obj=document.getElementsByTagName("SELECT");
var i;
for(i=0;i<obj.length;i++)
obj[i].style.visibility="visible";
}
</script>

<!---------------------------------------------------------------->
<script>
function clk_yes(){
alert("你也同意了我的观点");
}
function clk_no(){
alert("不是你眼花了就是我眼花了!");
}

</script>


<body>
<button onClick="confirm('今天天气真的很好啊,难道不是么?','clk_yes','clk_no','就算是吧','乱讲')">询问框测试</button>

<p><br/>
<br/>
<br/>
弹出提示的音效文件是:snd.mp3</p>
<p>如果需要可以替换成其它文件,文件名要设置成snd.mp3</p>
<p>版本1.2修改:<br/>
1、主要修改了滚屏出现的问题
</p>
<p>版本1.1修改:<br/>
1、增加了询问框的功能。<br/>
2、增加了音效功能<br/>
3、修饰界面</p>

<p><b>黑旋风(LCKKING)Mail:lewclear97@163.com QQ:23929003</b><br/>版本1.2修改:<br/>
由于最近在做一个东西,需要对界面设计的很友好,所以借用了你的源代码,但是你的作品还有些BUG以及不足,<br/>
例如alert之后如果按tab键,焦点会回到主页面上去,这样就不安全了。声音加载的时候,页面会闪一下,<br/>
也不是很好,询问框按钮文字windows的没法改,难道自己模拟的也没法改吗?(当然,我把他改了)。<br/>
同原作一样,没考虑跨浏览器,以后有机会再改了<br/>
对了,你的函数上原来的那些注释(如:日期、作者等)写得那么多,看程序觉得不方便,就删除了,不要介意!<br/>
总之谢谢了,为了感谢网友的无私,我也把改了的代码发给大家,希望对大家有所帮助,献丑了!<br/>
1、由于声音加载会使页面跳一下,我不太喜欢,去掉了这个功能,希望不要介意。<br/>
2、改成面向对象设计,这样更加合理一点(个人意见)<br/>
3、扩展了询问框的按钮文字参数设置<br/>
4、覆盖了系统自带的alert和confirm方法,如果大家不喜欢,把头上那2句话删除就可以了<br/>
5、支持键盘操作。fdsa</p>
<p>&nbsp;</p>
<p>
<button onClick="alert('我觉得今天天气真的很不错!')">test</button>
</p>
</body>

相关文章:

实现通用人工智能还要多久?Hinton与AlphaGo之父这样回答

作者 | Klye Wiggers 译者 | 刘旭坤 责编 | 琥珀 出品 | AI科技大本营&#xff08;公众号ID&#xff1a;rgznai100&#xff09; 人工智能&#xff08;AI&#xff09;在即将过去的 2018 年进展神速&#xff0c;取得了很多令人瞩目的成就&#xff0c;比如预测用户感兴趣的音乐…

SQL Server 2008备份大全实战(七)

这一篇博文探讨下SQL Server 2008 备份的实际操作&#xff0c;事实上SQL Server 2008并不关心数据是备份到物理磁盘上还是磁带上&#xff0c;在SQL Server 2008数据库备份中&#xff0c;预定义的目标位置叫做设备。这里设备是对硬盘&#xff0c;磁带机等备份存储的通称。通俗些…

一个中心、三大原则,阿里这样做智能对话开发平台

作者 | 阿里巴巴高级算法专家 李永彬&#xff08;水德&#xff09;整理 | 一一出品 | AI科技大本营在阿里巴巴的X峰会上&#xff0c;阿里巴巴-智能服务事业部高级算法专家李永彬&#xff08;水德&#xff09;分享了小蜜智能开发平台的构建&#xff0c;他围绕平台来源、设计理念…

大学生目前普遍存在的问题,看你中招了没?

大学几多歌 上课时清醒没有发呆的多&#xff0c;发呆没有睡觉的多&#xff0c;睡觉没有玩手机的多。下课时自习没有吃零食多&#xff0c;吃零食没有看连续剧多&#xff0c;看连续剧没有游戏多。吃饭时吃早餐的没有吃午餐/晚餐的多&#xff0c;吃午餐/晚餐的没有点外卖的多。听讲…

javascript用感

最近两天一直与javascript打交道&#xff0c;现在想总结下所有值处 以下类型都是自己概括别名 1.创建型 例子: var objdocument.createElement("div");//例如创建个DIV var div1document.createElement("div"); div1.id"ddv"; div1.style.w…

Vulkan Tutorial 12 Fixed functions

Vertex input VkPipelineVertexInputStateCreateInfo结构体描述了顶点数据的格式&#xff0c;该结构体数据传递到vertex shader中。它以两种方式进行描述: Bindings:根据数据的间隙&#xff0c;确定数据是每个顶点或者是每个instance(instancing) Attribute 描述:描述将要进行…

年后跳槽BAT必看:10种数据结构、算法和编程课助你面试通关

作者 | javinpaul译者 | 大鱼编辑 | 一一出品 | AI 科技大本营进入 BAT 这样的巨头企业工作&#xff0c;无疑是很多程序员的梦想。但事实上&#xff0c;能通过这些公司高难度编程面试的只是一小撮人&#xff0c;大多数人因为理论知识和项目实践的匮乏导致在面试后很快被淘汰&am…

戚薇在冰箱放香水,是贫穷限制了想象力!

前有李诞冰箱里放面膜&#xff0c;今有戚薇冰箱里放香水&#xff0c;《拜托了冰箱》真是为观众们打开了新世界的大门。在昨晚播出的节目中&#xff0c;戚薇充分展现了她作为“美妆博主”的实力&#xff0c;冰箱里摆满的香水不仅让冰箱家族看得目瞪口呆&#xff0c;网友们也是激…

使用apache的activemq集合JMS处理异步消息

为什么80%的码农都做不了架构师&#xff1f;>>> 1&#xff1a;先去apache下载 http://activemq.apache.org/ &#xff0c;大约有25M&#xff0c;要有点耐心 直接打开就可以使用&#xff1b;当然它也提供了安装为windows service的方法 2&#xff1a;配置activemq 在…

中国大学生创业报告发布

由中国人民大学牵头&#xff0c;北京师范大学、上海交通大学等30余家高校、企业和社会组织联合跟踪调查的《2017年中国大学生创业报告近日发布。这份覆盖全国52所高校的报告表明&#xff0c;大学生创业意愿持续高涨&#xff0c;大学生创业层次也在不断提升&#xff0c;但大学生…

windows server 2012 application control policy

启用Application Control policy 组策略设置&#xff0c;可以实现基于用户或组的应用程序权限控制&#xff0c;有两点需要注意&#xff1a; 1、策略的顺序是从上到下执行的&#xff0c;allow的策略需要放在上面。 2、在客户端上&#xff0c;或者在远程桌面的服务器上需要启用ap…

你已经是个成熟的表格,该学会NLP了

作者 | 唐都钰、孙一博来源 | 微软亚洲研究院AI头条编者按&#xff1a;在我们的生活中&#xff0c;用语音查询天气&#xff0c;用必应搜索信息&#xff0c;这些常见的场景都离不开一种应用广泛的数据存储方式——表格&#xff08;table&#xff09;。如果让表格更智能一些&…

[Design] Flyweight Pattern

结构模式  结构模式描述如何将类或者类的对象结合在一起形成更大的结构。  结构模式描述两种不同的东西&#xff1a;类与类的实例。结构模式可以分为&#xff1a;类的结构模式和对象的结构模式两种。  类的结构模式&#xff1a;类的结构模式使用继承来把类、接口等组合在一…

网友们票选的2018 Best Paper,你pick谁?

整理 | 琥珀出品 | AI科技大本营不久前&#xff0c;Reddit 机器学习论坛上一位网友发布了一个帖子&#xff1a;“What is the best ML paper you read in 2018 and why?&#xff08;你认为 2018 年读过的最好的论文是哪篇&#xff1f;&#xff09;”吸引了各路网友前来回答。营…

微信小游戏创业,究竟是红海还是死海?

“跳一跳”、“弹球王者”、“海盗来了”、“斗地主”等等微信小游戏&#xff0c;你是不是很眼熟呢&#xff1f;这些都是前段时间被刷了屏的小游戏&#xff0c;以“海盗来了”为例&#xff0c;据透露&#xff0c;其月流水已经突破了 1000 万&#xff0c;单日流水峰值也达到了 2…

OSPF中的frame-relay(3) 点到多点非广播

hostname R1!interface Loopback0 ip address 1.1.1.1 255.255.255.255interface Serial0 ip address 192.168.1.1 255.255.255.0 encapsulation frame-relay ip ospf network point-to-multipoint non-broadcast //将接口类型指定为点对多点非广播 frame-relay map ip 192.1…

一步一步SharePoint 2007之十六:注册并配置一个网站用户

在前面的文章中&#xff0c;我已经介绍了如何创建管理帐户。创建其它帐户的方法是一样的。大家可以把这个注册系统放到自己的网站中&#xff0c;就可以成为网站的一部分了。本文将只讲解如何在管理工具中将用户手动加入到网站用户组中&#xff0c;至于如何将注册完后的用户自动…

Facebook再曝数据丑闻删除应用数据仍会被泄漏

据外媒报道&#xff0c;道德黑客、漏洞赏金猎人Inti De Ceukelaire于昨日披露&#xff0c;名为“NameTests”的第三方测验应用令1.2亿Facebook用户面临数据泄露风险&#xff0c;这进一步时使Facebook的数据丑闻升温。道德黑客Inti De Ceukelaire发现&#xff0c;只要用户注册Na…

榨菜肉丝汤的做法

<!-- /* Font Definitions */ font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} font-face {font-famil…

“不设边界”的云知声:从多场景AI芯片到视觉AI,誓要2019营收近3倍

记者| 杨丽 出品| AI科技大本营 若非要总结 2018、展望 2019 的话&#xff0c;可以借用云知声创始人兼 CEO 黄伟的一句点评&#xff1a;“所有伟大的公司都诞生于真实的生产需求。” 2019 年 1 月 2 日&#xff0c;云知声在京召开战略发布会&#xff0c;正式公布其正在研发的…

微软公布Win10正式版功能对比表,哪个版本适合你?

微软今天公布了Win10各个版本功能特性对照表&#xff0c;详细列出了Windows10系统的大多数功能以及哪些版本具备这些功能。通过这张表格可为消费者购买或升级Win10提供参考。 微软公布的原版表格为英文版&#xff08;可点此下载&#xff09;&#xff0c;IT之家将其翻译为中文&a…

linux tpm 测试完整记录,亲测有效。

没有tpm芯片&#xff0c;采用模拟器的方式来测试。 实验环境&#xff1a;内核版本 3.10.0-327 软件包准备&#xff1a; 内网&#xff0c;没有仓库&#xff0c;自己网上下载&#xff1a; 1. cmake-3.9.6-Linux-x86_64.tar.gz 解压后就已经有bin文件&#xff0c;可以直接使用bin下…

互联网流量太贵!新零售成创业新风口

什么是新零售?无人便利店、每个创业者都有自己的电商平台?运用人工智能、大数据等技术手段&#xff0c;对商品生产、流通、销售进行再升级&#xff0c;进而提高线上服务与线下体验?其实&#xff0c;说白了就是效率更高的零售新模式。联网早期的流量福利开始变弱&#xff0c;…

拼多多黄峥给陆奇“兼职”,欲挖掘这类AI人才

整理 | 一一出品 | AI科技大本营在上任 Y Combinator 中国创始人兼 CEO 四个月后&#xff0c;陆奇今日宣布三位兼职合伙人加盟 YC 中国&#xff0c;同时宣布新一期创业训练营正式完成招生工作&#xff0c;即将开始为期三个月的冬季训练营培训工作。三位兼职合伙人分别是拼多多创…

Crystal Reports中的字段

字段&#xff0c;是Crystal Reports呈现数据的基本单元&#xff0c;也是报表的数据中心。 在Crystal Reports中&#xff0c;字段的类型有数据库字段&#xff0c;公式字段&#xff0c;参数字段&#xff0c;组名字段&#xff0c;运行总计字段&#xff0c;特殊字段&#xff0c;未绑…

深度学习的发展可能已达极限!

【编者按】回首 2018 年&#xff0c;身处技术圈的你是否曾反思过些什么——科技与非科技企业界限的日益模糊、技术的发展现状和前景、科技发展的正向助推到负面效应&#xff0c;乃至个人心态上的变化。人文、生态、社会……玩技术的人看到的从来不仅仅是技术本身而已&#xff0…

大学生创业难?现在已不是问题!

现在越来越多的大学生离开学校加入了自主创业的队伍&#xff0c;那么你一定要知道政府为扶持大学生创业&#xff0c;出台的那些鼓励政策&#xff01;如果你符合以下条件&#xff1a;1、公司法人是普通高等院校&#xff08;高自考的不行&#xff09;毕业前2年的在校生和毕业后5年…

Oracle:彻底结束会话 ,彻底解锁

oracle会话被锁是经常的。但有时alter system kill session sid,serial#;并不能彻底的杀死会话。只能通过杀死Linux上对应的进程才行。以前都是通过v$session里的logon_time&#xff0c;和ps -ef|grep oracle所列出的时间大约的定位进程。然后结束。本来想把这个写成日志。但有…

使用vim打造自己的python编辑器

基础配置 vim的配置是在用户主目录下的 ~/.vimrc 文件中完成的&#xff0c;如果没有的话&#xff0c;需要自己新建一下&#xff1a; cd ~ touch .vimrc首先做些简单的配置&#xff1a; set nocompatible "关闭与vi的兼容模式 set number "显示行号 set nowrap &qu…

两亿多用户,六大业务场景,知乎AI用户模型服务性能如何优化?

作者 | 王政英来源 | 知乎技术专栏用户模型简介知乎 AI 用户模型服务于知乎两亿多用户&#xff0c;主要为首页、推荐、广告、知识服务、想法、关注页等业务场景提供数据和服务&#xff0c;例如首页个性化 Feed 的召回和排序、相关回答等用到的用户长期兴趣特征&#xff0c;问题…