ie6(或者其他浏览器)使用dialog弹框访问(交互数据)服务器失败(artdialog -v5.0.4)

       在网页开发中,网页弹框用于提示或者和用户交互是必要之一,方便用户使用和提高用户的体验。可弹框实现有多种办法,可是“jquery.ui.dialog.js”实现的弹框,在ie6或者使用专用网络或者用类似浏览器软件(本质是浏览器)访问服务器,可能导致客户端正确访问(发送和接受数据异常[null])服务器失败。

       后来调查原因发现是专用网络(url)或者用类似浏览器软件,导致dialog弹框提交数据失败。归根到底,就是因为,这些和dialog不兼容,那么去修改dialog还是???。

       解决问题,要么在之前基础上修改直到ok,要么用新的实现方式替代之前的(也就是,遇到问题有的时候解决还不如放弃之前,重新做一个呢)。   

       最终,发现了新的dialog实习方式,替代了jQueryUI实现的dialog,它就是artdialog,可是这个artdialog版本之间的差异很大,提供了很大的版本和css样式

(此处使用artdialog -v5.0.4版本):

       兼容:IE6+、Firefox、Chrome、Safari、Opera以及iPad等移动设备。并且IE6下也能支持现代浏览器的静止定位(fixed)、覆盖下拉控件、alpha通道png背景。

      artdialog各个版本的下载地址(可以选择branch下拉框,选择版本):

      https://github.com/aui/artDialog   

      http://code.google.com/p/artdialog/   (老版本)

     每个版本之间都有好多事例,并且index.html详细讲述使用用法(各种样式)和更新内容。

     在

     https://github.com/aui/artDialog/blob/5.0.4/README.md

     中,讲述了各个版本更新比较。

最终实现效果图(弹框颜色可自定义,文最后解释):--->图片显示不清,可保存查看!

 ie6(或者其他浏览器)使用dialog弹框访问(交互数据)服务器失败(artdialog -v5.0.4)

artdialog的使用:

1.在页面 head 引入 artDialog 样式与脚本文件:

<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath }/artDialog-5.0.4/skins/default.css" />
<script type="text/javascript"  src="${pageContext.request.contextPath }/artDialog-5.0.4/source/artDialog.js"></script>
<script type="text/javascript"  src="${pageContext.request.contextPath }/artDialog-5.0.4/source/artDialog.plugins.js"></script>

      注:css样式(自己选择,也可做相应的修改),artdialog的js导入,在生产模式下,应该导入artDialog.min.js和artDialog.plugins.min.js或jquery.artDialog.min.js(此min只有代码,没有代码书写格式和整理,没有注释,节省空间)。

2.在js代码中,实现artdialog弹框显示:  

function getDialog(showMsg,callback){
	art.dialog({
	id: 'artdialoggg',
	lock:true,
//	height:350,  //auto,让内容自控制
//	width:400,
	title: '信息确认页',
	content: showMsg,
	initialize:function(){
	  setTableBgColor("userinfoshow");
	},
	button:[
        	{
        		value:'[确认]',
        		callback: function(){
        			this .dialog = close;
//		        	this.close();
        			cancelDialog();
        			callback();
        		}
        	},
        	{
        		value:'[取消]',
        		callback:function(){
        			this .dialog = close;
        			cancelDialog();
        		}
        	}
		        ]
	});
	$("#character").attr("disabled",true);
	$("#character").css("background-color","#E0E0E0");
}

 注:最简单的弹框代码就是:

	art.dialog({
	id: 'artdialoggg',
	lock:true,
	height:350,制
	width:400,
	title: '信息确认页',
	content: '我是内容已确认过了!',
	button:[
        	{
        		value:'[确认]',
        		callback: function(){
        			this .dialog = close;
        		}
        	},
        	{
        		value:'[取消]',
        		callback:function(){
        			this .dialog = close;

        		}
        	}
		        ]
	});

3:实现后,为了兼容ie6和其他浏览器,对代码做了相应的修改:

 问题:[1]: ie6下select层,没有被覆盖,也没被锁定,和artdialog锁定背景色不一致。

            [2]: 并且在有些浏览器下有artdialog的盒子黑框。

 解决[1]:在js中,加入,对select下拉框手动锁定和改变背景颜色:

	$("#character").attr("disabled",true);
	$("#character").css("background-color","#E0E0E0");

但在ESC退出和关闭“X”按钮的时候,背景色不返回,则,调用方法解决:

/**
 *ie6 artdialog ESC & cancel select operation
 * */
function cancelDialog(){
	//关于ie6下select无法锁定和变色,或其他问题处理
	$("#character").attr("disabled",false);
	$("#character").css("background-color","#FFFFFF");
}


上cancelDialog()方法,在点下“[确认]”、"[取消]"、ESC键按下,“X”按下使用都要调用(前两者都在上面artdialog代码中实现,后两者如下):

      修改artDialog.js:

      artdialog实现,就是一段html的table+css代码是相对的:

// XHTML 模板
// 使用 uglifyjs 压缩能够预先处理"+"号合并字符串
// @see	http://marijnhaverbeke.nl/uglifyjs
artDialog._templates = 
'<div class="d-outer" role="dialog" tabindex="-1" aria-labelledby="d-title-{id}" aria-describedby="d-content-{id}">'
+	'<table class="d-border">'
+		'<tbody>'
+			'<tr>'
+				'<td class="d-nw"></td>'
+				'<td class="d-n"></td>'
+				'<td class="d-ne"></td>'
+			'</tr>'
+			'<tr>'
+				'<td class="d-w"></td>'
+				'<td class="d-c">'
+					'<div class="d-inner">'
+					'<table class="d-dialog">'
+						'<tbody>'
+							'<tr>'
+								'<td class="d-header">'
+									'<div class="d-titleBar">'
+										'<div id="d-title-{id}" class="d-title"></div>'
+										'<a class="d-close" onclick="cancelDialog();" href="javascript:;" title="{cancelValue}">x</a>'
+									'</div>'
+								'</td>'
+							'</tr>'
+							'<tr>'
+								'<td class="d-main">'
+									'<div id="d-content-{id}" class="d-content"></div>'
+								'</td>'
+							'</tr>'
+							'<tr>'
+								'<td class="d-footer">'
+									'<div class="d-buttons"></div>'
+								'</td>'
+							'</tr>'
+						'</tbody>'
+					'</table>'
+					'</div>'
+				'</td>'
+				'<td class="d-e"></td>'
+			'</tr>'
+			'<tr>'
+				'<td class="d-sw"></td>'
+				'<td class="d-s"></td>'
+				'<td class="d-se"></td>'
+			'</tr>'
+		'</tbody>'
+	'</table>'
+'</div>';

代码中,在23行,“x”链接按钮中,加入“ onclick="cancelDialog();" ”来实现。

   ESC键键盘输入码为"27",将代码:

keyCode === 27 && api._click('cancel'); 

修改成为:

	if(keyCode === 27 && api._click('cancel')){
		cancelDialog();
	}

注:最终,可实现,artdialog覆盖select(视觉效果)。但在ie6下由于层覆盖原因,div覆盖iframe覆盖select,select在artdialog层之上,并未解决!!!。

css样式:

通过各种skins下css的对比,都有点不一样,都不是我想要的,但我所要的各css都有点,所以对chrome.css 和twitter.css 和default.css,进行了合并,完成了

ie6(或者其他浏览器)使用dialog弹框访问(交互数据)服务器失败(artdialog -v5.0.4)

css代码:

@charset "utf-8";
/*
 * artDialog skin
 * https://github.com/aui/artDialog
 * (c) 2009-2013 TangBin, http://www.planeArt.cn
 *
 * This is licensed under the GNU LGPL, version 2.1 or later.
 * For details, see: http://creativecommons.org/licenses/LGPL/2.1/
 */
 
/* common start */
body { _margin:0; _height:100%; }/*IE6 BUG*/ 
.d-outer { text-align:left; outline:none 0; }
.d-border, .d-dialog { border:0 none; margin:0; border-collapse:collapse; width:auto; }
.d-nw, .d-n, .d-ne, .d-w, .d-c, .d-e, .d-sw, .d-s, .d-se, .d-header, .d-main, .d-footer { padding:0; }
.d-header, .d-button { font: 12px/1.11 'Microsoft Yahei', Tahoma, Arial, Helvetica, STHeiti; _font-family:Tahoma,Arial,Helvetica,STHeiti; -o-font-family: Tahoma, Arial; }
.d-title { overflow:hidden; text-overflow: ellipsis; cursor:default;background:rgb(101, 153, 254); }
.d-state-noTitle .d-title { display:none; }
.d-close { display:block; position:absolute; text-decoration:none; outline:none; _cursor:pointer; }
.d-close:hover { text-decoration:none; }
.d-main { text-align:center; vertical-align:middle; min-width:9em; }
.d-content { display:inline-block; display:block\0/*IE8 BUG*/; display:inline-block\9\0; *zoom:1; *display:inline; text-align:left; border:0 none;  }
.d-content.d-state-full { display:block; width:100%; margin:0; padding:0!important; height:100%; }
.d-loading { width:96px; height:32px; text-align:left; text-indent:-999em; overflow:hidden; background:url(loading.gif) no-repeat center center; }
.d-buttons { padding:8px; text-align:right; white-space:nowrap; }
.d-button { margin-left:15px; padding: 0 8px; cursor: pointer; display: inline-block; min-height:2.2em; text-align: center; *padding:4px 10px; *height:2em; letter-spacing:2px; font-family: Tahoma, Arial/9!important; width:auto; overflow:visible; *width:1; color: #333; border: 1px solid #999; border-radius: 5px; background: #DDD; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFF', endColorstr='#DDDDDD'); background: linear-gradient(top, #FFF, #DDD); background: -moz-linear-gradient(top, #FFF, #DDD); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#FFF), to(#DDD)); text-shadow: 0px 1px 1px rgba(255, 255, 255, .5);; box-shadow: 0 1px 0 rgba(255, 255, 255, .7),  0 -1px 0 rgba(0, 0, 0, .09); -moz-transition:-moz-box-shadow linear .2s; -webkit-transition: -webkit-box-shadow linear .2s; transition: box-shadow linear .2s; }
.d-button::-moz-focus-inner, .d-button::-moz-focus-outer { border:0 none; padding:0; margin:0; }
.d-button:focus { outline:none 0; border-color:#426DC9; box-shadow:0 0 8px rgba(66, 109, 201, .9); }
.d-button:hover { color:#C72015; border-color:#666; }
.d-button:active { border-color:#666; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#DDDDDD', endColorstr='#FFFFFF'); background: linear-gradient(top, #DDD, #FFF); background: -moz-linear-gradient(top, #DDD, #FFF); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#DDD), to(#FFF)); box-shadow:inset 0 1px 1em rgba(0, 0, 0, .6), inset 0 1px 1em rgba(0, 0, 0, .3); }
.d-button[disabled] { cursor:default; color:#666; background:#DDD; border: 1px solid #999; filter:alpha(opacity=50); opacity:.5; box-shadow:none; }
.d-state-highlight { color: #FFF; border: 1px solid #1c6a9e; background: #2288cc; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33bbee', endColorstr='#2288cc'); background: linear-gradient(top, #33bbee, #2288cc); background: -moz-linear-gradient(top, #33bbee, #2288cc); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#33bbee), to(#2288cc)); text-shadow: -1px -1px 1px #1c6a9e; }
.d-state-highlight:hover { color:#FFF; border-color:#0F3A56; }
.d-state-highlight:active { border-color:#1c6a9e; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#33bbee', endColorstr='#2288cc'); background: linear-gradient(top, #33bbee, #2288cc); background: -moz-linear-gradient(top, #33bbee, #2288cc); background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#33bbee), to(#2288cc)); }
.d-mask { background:#E0E0E0; filter:alpha(opacity=70); opacity:.7; }
/* common end */

.d-inner { background:rgb(255, 255, 255); } /**body background color*/
.d-titleBar { width:100%; height:0; position:relative; bottom:26px; _bottom:0; _margin-top:-26px;}
.d-title { height:26px; line-height:23px; padding:0 60px 0 5px; color:#FFF; font-weight:700; text-shadow:0 1px 0 #000;background:rgb(101, 153, 254); }
.d-nw, .d-n, .d-ne, .d-w, .d-e, .d-sw, .d-s, .d-se { background:rgb(101, 153, 254); background:#6698fe\9!important; }/**title result center*/
.d-nw { width:5px; height:26px; background-position: -46px -8px; }
.d-ne { width:5px; height:26px; background-position: -53px -8px; }
.d-w { background-position:-60px 0; background-repeat:repeat-y; }
.d-e { background-position:-65px 0; background-repeat:repeat-y; }
.d-sw { width:5px; height:5px; background-position: -46px -2px;}
.d-se { width:5px; height:5px; background-position: -53px -2px;}
.d-close { padding:0; top:2px; right:5px; width:21px; height:21px; line-height:21px; font-size:18px; text-align:center; color:#FFFFFF; font-family: Helvetica, STHeiti; _font-family: Tahoma, '\u9ed1\u4f53', 'Book Antiqua', Palatino; border:1px solid transparent; _border:0 none; background:#c4eaff; border-radius:15px;  }/**color result center*/
.d-close:hover { color:#FFF; background:#C72015; border:1px solid #000; _border:0 none; box-shadow: 0 1px 0 rgba(255, 255, 255, .3), inset 0 1px 0 rgba(255, 255, 255, .3); }/**color result center*/
.d-content {font-size:12px;}  /**body font size*/
.d-n, .d-s { background-color:#F6F6F6; }
.d-n { background-position:0 top; }
.d-s { background-position: 0 bottom; background:rgb(101, 153, 254);}.d-buttons { background-color:#F6F6F6; border-top:1px solid #DADEE5; }
.d-state-noTitle .d-nw, .d-state-noTitle .d-ne, .d-state-noTitle .d-sw, .d-state-noTitle .d-se { width:3px; height:3px; }
.d-state-noTitle .d-inner { border:1px solid #666; background:#FFF; }
.d-state-noTitle { box-shadow:none; }
.d-state-noTitle .d-nw, .d-state-noTitle .d-n, .d-state-noTitle .d-ne, .d-state-noTitle .d-w, .d-state-noTitle .d-e, .d-state-noTitle .d-sw, .d-state-noTitle .d-s, .d-state-noTitle .d-se { background:rgba(0, 0, 0, .05); background:#000\9!important; filter:alpha(opacity=5)!important; }
.d-state-noTitle .d-titleBar { bottom:0; _bottom:0; _margin-top:0; }
.d-state-noTitle .d-close { top:0; right:0; width:18px; height:18px; line-height:18px; text-align:center; text-indent:0; font-family: Helvetica, STHeiti; _font-family: '\u9ed1\u4f53', 'Book Antiqua', Palatino; font-size:18px; text-decoration:none; color:#214FA3; background:none; filter:!important; }
.d-state-noTitle .d-close:hover, .d-state-noTitle .d-close:active { text-decoration:none; color:#900; }

/* css3 */
/*.d-state-focus {box-shadow:none;
		/*filter: progid:DXImageTransform.Microsoft.Shadow(color=’#FF0000′, Direction=135, Strength=5); background-color: #FF0000;/*for ie6,7,8*/ 
		/*	-moz-box-shadow:2px 2px 5px #FF0000;/*firefox*/ 
		/*	-webkit-box-shadow:2px 2px 5px #FF0000;/*webkit*/
		/*	box-shadow:2px 2px 5px #FF0000;/*opera或ie9*/
		/*	 box-shadow:0 3px 26px rgba(255, 0, 0, .9); }*/

上边,重要解析:

.d-mask { background:#E0E0E0; filter:alpha(opacity=70); opacity:.7; }

上此行css代码,为覆盖页面的背景色和透明度(此处为灰色的#E0E0E0)。

.d-nw, .d-n, .d-ne, .d-w, .d-e, .d-sw, .d-s, .d-se { background:rgb(101, 153, 254); background:#6698fe\9!important; }/**title result center*/

上此行css代码,artdialog框体的主背景。(此处为亮蓝色#6698fe,rgb(101, 153, 254);),由于做了ie6兼容,所以rgba的a和filter:alpha(opacity=70); opacity:.7;的透明度,去除了!

.d-inner { background:rgb(255, 255, 255); } /**body background color*/
.d-content {font-size:12px;}  /**body font size*/

上此行代码为artdialog的内容中的背景色(此处为白色rgb(255, 255, 255);)和字体大小(其他样式可自定义);

.d-title { overflow:hidden; text-overflow: ellipsis; cursor:default;background:rgb(101, 153, 254);}                             .d-title { height:26px; line-height:23px; padding:0 60px 0 5px; color:#FFF; font-weight:700; text-shadow:0 1px 0 #000; background:rgb(101, 153, 254); }
.d-s { background-position: 0 bottom;background:rgb(101, 153, 254); }

上此行css在firefox和chrome头和脚的颜色不显示解决(好像有点概率性,暂无解决)

.d-close:hover { color:#FFF; background:#C72015; border:1px solid #000; _border:0 none; box-shadow: 0 1px 0 rgba(255, 255, 255, .3), inset 0 1px 0 rgba(255, 255, 255, .3); }/**color result center*/
.d-button:hover { color:#C72015; border-color:#666; }

上此行为鼠标移上“X”关闭连接和按钮时候触发的变红效果(此处为#C72015)

.d-state-focus { box-shadow:0 3px 26px rgba(0, 0, 0, .9);  }

上此行代码向artdialog弹框添加一个阴影特效,也是在ie6下的那个黑色边框的原因,但ie6不支持box-shadow,所以无效,只要有都为黑色实心框。效果图:
ie6(或者其他浏览器)使用dialog弹框访问(交互数据)服务器失败(artdialog -v5.0.4)

代码:

.d-state-focus { box-shadow:0 3px 26px rgba(255, 0, 255, .6); }

 上行css代码为为artdialog添加透明度.6的的粉红色阴影。

上一篇:Max compute 计算长尾问题优化| 学习笔记


下一篇:Java网络编程:实现HTTP断点续传下载工具(附源代码)