├── index.html ├── ymPrompt_Ex.js ├── skin ├── qq │ ├── images │ │ ├── ask.gif │ │ ├── err.gif │ │ ├── ico.gif │ │ ├── info.gif │ │ ├── right.gif │ │ ├── win_b.gif │ │ ├── win_l.gif │ │ ├── win_r.gif │ │ ├── btn_bg.gif │ │ ├── win_lb.gif │ │ ├── win_rb.gif │ │ ├── content_bg.gif │ │ ├── title_bg_center.gif │ │ ├── title_bg_left.gif │ │ └── title_bg_right.gif │ └── ymPrompt.css ├── black │ ├── images │ │ ├── ask.gif │ │ ├── err.gif │ │ ├── ico.gif │ │ ├── info.gif │ │ ├── btn_bg.gif │ │ ├── right.gif │ │ ├── title_bg_left.gif │ │ ├── title_bg_right.gif │ │ └── title_bg_center.gif │ └── ymPrompt.css ├── simple │ ├── images │ │ ├── ask.gif │ │ ├── err.gif │ │ ├── ico.gif │ │ ├── info.gif │ │ └── right.gif │ └── ymPrompt.css ├── vista │ ├── images │ │ ├── ask.gif │ │ ├── err.gif │ │ ├── ico.gif │ │ ├── info.gif │ │ ├── btn_bg.gif │ │ ├── right.gif │ │ ├── win_b.gif │ │ ├── win_l.gif │ │ ├── win_lb.gif │ │ ├── win_r.gif │ │ ├── win_rb.gif │ │ ├── title_bg_left.gif │ │ ├── title_bg_right.gif │ │ └── title_bg_center.gif │ └── ymPrompt.css ├── bluebar │ ├── images │ │ ├── ask.gif │ │ ├── err.gif │ │ ├── ico.gif │ │ ├── info.gif │ │ ├── right.gif │ │ ├── btn_bg.gif │ │ ├── title_bg_center.gif │ │ ├── title_bg_left.gif │ │ └── title_bg_right.gif │ └── ymPrompt.css ├── dmm-green │ ├── images │ │ ├── ask.gif │ │ ├── err.gif │ │ ├── ico.gif │ │ ├── info.gif │ │ ├── right.gif │ │ ├── win_b.gif │ │ ├── win_l.gif │ │ ├── win_r.gif │ │ ├── btn_bg.gif │ │ ├── titleIco.gif │ │ ├── win_lb.gif │ │ ├── win_rb.gif │ │ ├── title_bg_left.gif │ │ ├── title_bg_center.gif │ │ └── title_bg_right.gif │ └── ymPrompt.css └── simple_gray │ ├── images │ ├── ask.gif │ ├── err.gif │ ├── info.gif │ └── right.gif │ └── ymPrompt.css ├── iframe.html ├── frameset.html ├── LICENSE.md ├── changelog.md ├── README.md ├── ymPrompt.js ├── ymPrompt.source.js └── demo.html /index.html: -------------------------------------------------------------------------------- 1 | My Page 2 | -------------------------------------------------------------------------------- /ymPrompt_Ex.js: -------------------------------------------------------------------------------- 1 | try{ymPrompt=top.ymPrompt}catch(e){} 2 | -------------------------------------------------------------------------------- /skin/qq/images/ask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/ask.gif -------------------------------------------------------------------------------- /skin/qq/images/err.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/err.gif -------------------------------------------------------------------------------- /skin/qq/images/ico.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/ico.gif -------------------------------------------------------------------------------- /skin/qq/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/info.gif -------------------------------------------------------------------------------- /skin/qq/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/right.gif -------------------------------------------------------------------------------- /skin/qq/images/win_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/win_b.gif -------------------------------------------------------------------------------- /skin/qq/images/win_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/win_l.gif -------------------------------------------------------------------------------- /skin/qq/images/win_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/win_r.gif -------------------------------------------------------------------------------- /skin/black/images/ask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/ask.gif -------------------------------------------------------------------------------- /skin/black/images/err.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/err.gif -------------------------------------------------------------------------------- /skin/black/images/ico.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/ico.gif -------------------------------------------------------------------------------- /skin/black/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/info.gif -------------------------------------------------------------------------------- /skin/qq/images/btn_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/btn_bg.gif -------------------------------------------------------------------------------- /skin/qq/images/win_lb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/win_lb.gif -------------------------------------------------------------------------------- /skin/qq/images/win_rb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/win_rb.gif -------------------------------------------------------------------------------- /skin/simple/images/ask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple/images/ask.gif -------------------------------------------------------------------------------- /skin/simple/images/err.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple/images/err.gif -------------------------------------------------------------------------------- /skin/simple/images/ico.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple/images/ico.gif -------------------------------------------------------------------------------- /skin/vista/images/ask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/ask.gif -------------------------------------------------------------------------------- /skin/vista/images/err.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/err.gif -------------------------------------------------------------------------------- /skin/vista/images/ico.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/ico.gif -------------------------------------------------------------------------------- /skin/vista/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/info.gif -------------------------------------------------------------------------------- /skin/black/images/btn_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/btn_bg.gif -------------------------------------------------------------------------------- /skin/black/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/right.gif -------------------------------------------------------------------------------- /skin/bluebar/images/ask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/ask.gif -------------------------------------------------------------------------------- /skin/bluebar/images/err.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/err.gif -------------------------------------------------------------------------------- /skin/bluebar/images/ico.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/ico.gif -------------------------------------------------------------------------------- /skin/bluebar/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/info.gif -------------------------------------------------------------------------------- /skin/bluebar/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/right.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/ask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/ask.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/err.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/err.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/ico.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/ico.gif -------------------------------------------------------------------------------- /skin/qq/images/content_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/content_bg.gif -------------------------------------------------------------------------------- /skin/simple/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple/images/info.gif -------------------------------------------------------------------------------- /skin/simple/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple/images/right.gif -------------------------------------------------------------------------------- /skin/vista/images/btn_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/btn_bg.gif -------------------------------------------------------------------------------- /skin/vista/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/right.gif -------------------------------------------------------------------------------- /skin/vista/images/win_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/win_b.gif -------------------------------------------------------------------------------- /skin/vista/images/win_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/win_l.gif -------------------------------------------------------------------------------- /skin/vista/images/win_lb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/win_lb.gif -------------------------------------------------------------------------------- /skin/vista/images/win_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/win_r.gif -------------------------------------------------------------------------------- /skin/vista/images/win_rb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/win_rb.gif -------------------------------------------------------------------------------- /skin/bluebar/images/btn_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/btn_bg.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/info.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/right.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/win_b.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/win_b.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/win_l.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/win_l.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/win_r.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/win_r.gif -------------------------------------------------------------------------------- /skin/simple_gray/images/ask.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple_gray/images/ask.gif -------------------------------------------------------------------------------- /skin/simple_gray/images/err.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple_gray/images/err.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/btn_bg.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/btn_bg.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/titleIco.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/titleIco.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/win_lb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/win_lb.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/win_rb.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/win_rb.gif -------------------------------------------------------------------------------- /skin/qq/images/title_bg_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/title_bg_center.gif -------------------------------------------------------------------------------- /skin/qq/images/title_bg_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/title_bg_left.gif -------------------------------------------------------------------------------- /skin/qq/images/title_bg_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/qq/images/title_bg_right.gif -------------------------------------------------------------------------------- /skin/simple_gray/images/info.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple_gray/images/info.gif -------------------------------------------------------------------------------- /skin/simple_gray/images/right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/simple_gray/images/right.gif -------------------------------------------------------------------------------- /skin/black/images/title_bg_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/title_bg_left.gif -------------------------------------------------------------------------------- /skin/black/images/title_bg_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/title_bg_right.gif -------------------------------------------------------------------------------- /skin/vista/images/title_bg_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/title_bg_left.gif -------------------------------------------------------------------------------- /skin/vista/images/title_bg_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/title_bg_right.gif -------------------------------------------------------------------------------- /skin/black/images/title_bg_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/black/images/title_bg_center.gif -------------------------------------------------------------------------------- /skin/bluebar/images/title_bg_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/title_bg_center.gif -------------------------------------------------------------------------------- /skin/bluebar/images/title_bg_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/title_bg_left.gif -------------------------------------------------------------------------------- /skin/bluebar/images/title_bg_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/bluebar/images/title_bg_right.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/title_bg_left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/title_bg_left.gif -------------------------------------------------------------------------------- /skin/vista/images/title_bg_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/vista/images/title_bg_center.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/title_bg_center.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/title_bg_center.gif -------------------------------------------------------------------------------- /skin/dmm-green/images/title_bg_right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yemoo/ymPrompt/HEAD/skin/dmm-green/images/title_bg_right.gif -------------------------------------------------------------------------------- /iframe.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | new document 5 | 6 | 7 | 8 | 13 | 14 | 15 | Iframe中的下拉框: 19 | 20 | 21 | -------------------------------------------------------------------------------- /frameset.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | new document 5 | 6 | 7 | 8 | 9 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT LICENSE 2 | =========== 3 | 4 | Copyright (c) 2009-2013 yemoo, http://ajaxbbs.net/ 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining 7 | a copy of this software and associated documentation files (the 8 | "Software"), to deal in the Software without restriction, including 9 | without limitation the rights to use, copy, modify, merge, publish, 10 | distribute, sublicense, and/or sell copies of the Software, and to 11 | permit persons to whom the Software is furnished to do so, subject to 12 | the following conditions: 13 | 14 | The above copyright notice and this permission notice shall be 15 | included in all copies or substantial portions of the Software. 16 | 17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 18 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 19 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 20 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 21 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 22 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 23 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /skin/simple_gray/ymPrompt.css: -------------------------------------------------------------------------------- 1 | /*container*/ 2 | #ym-window{ 3 | background:#fff;overflow:hidden; 4 | font-size:12px;font-family:'宋体'; 5 | } 6 | 7 | /*header*/ 8 | .ym-tl{padding-left:4px;background:#aaa;} 9 | .ym-tr{padding-right:4px} 10 | .ym-tc{border-top:4px solid #aaa;background:#ddd;overflow:hidden;height:25px;line-height:25px;} 11 | .ym-ttc{height:0px} 12 | .ym-header-text{color:#000;font-weight:bold;margin-left:5px;float:left} 13 | .ym-header-tools{float:right;margin-top:1px} 14 | 15 | /*body*/ 16 | .ym-ml{background:#aaa;padding-left:4px;} 17 | .ym-mr{padding-right:4px;} 18 | .ym-mc{background:#fff;padding:0} 19 | .ym-body{overflow:auto;padding:0;font-size:12px;} 20 | 21 | /*button*/ 22 | .ym-btn{background:#fff;text-align:center} 23 | 24 | /*footer*/ 25 | .ym-bl{background:#aaa;padding-left:4px} 26 | .ym-br{padding-right:4px} 27 | .ym-bc{height:4px;font-size:4px} 28 | 29 | /*icon*/ 30 | .ymPrompt_alert{ 31 | padding-left:90px; 32 | background:url(images/info.gif) no-repeat 20px 50% 33 | } 34 | .ymPrompt_succeed{ 35 | padding-left:90px; 36 | background:url(images/right.gif) no-repeat 20px 50% 37 | } 38 | .ymPrompt_error{ 39 | padding-left:90px; 40 | background:url(images/err.gif) no-repeat 20px 50% 41 | } 42 | .ymPrompt_confirm{ 43 | padding-left:90px; 44 | background:url(images/ask.gif) no-repeat 20px 50% 45 | } 46 | .ymPrompt_alert .ym-content,.ymPrompt_succeed .ym-content,.ymPrompt_error .ym-content,.ymPrompt_confirm .ym-content{padding:50px 0 0} 47 | 48 | /*图标公共定义*/ 49 | .ym-header-tools div{ 50 | cursor:pointer; 51 | width:16px;height:16px;float:left;margin:0 1px; 52 | font-family:webdings 53 | } 54 | 55 | /*取消确认按钮样式*/ 56 | input.btnStyle{ 57 | background:#ccc; 58 | width:80px;height:21px;line-height:21px; 59 | font-size:12px;color:#000;border:0;margin:10px 0 60 | } -------------------------------------------------------------------------------- /skin/simple/ymPrompt.css: -------------------------------------------------------------------------------- 1 | /*container*/ 2 | #ym-window{ 3 | background:#fff;overflow:hidden; 4 | font-size:12px;font-family:'宋体'; 5 | } 6 | 7 | /*header*/ 8 | .ym-tl{padding-left:1px;background:#48BBFA} 9 | .ym-tr{padding-right:1px;} 10 | .ym-tc{overflow:hidden;height:25px;line-height:25px;} 11 | .ym-ttc{height:1px} 12 | .ym-header-text{font-size:14px;color:#fff;margin-left:5px;float:left;font-weight:bold} 13 | .ym-header-tools{float:right;margin:5px 5px 0 0} 14 | .ym-header-tools strong{display:none} 15 | 16 | /*body*/ 17 | .ym-ml{background:#48BBFA;padding-left:1px;} 18 | .ym-mr{padding-right:1px;} 19 | .ym-mc{background:#fff;padding:0} 20 | .ym-body{overflow:auto;padding:0;font-size:12px;} 21 | 22 | /*button*/ 23 | .ym-btn{background:#fff;text-align:center} 24 | 25 | /*footer*/ 26 | .ym-bl{background:#48BBFA;padding-left:1px} 27 | .ym-br{padding-right:1px} 28 | .ym-bc{height:1px;font-size:1px} 29 | 30 | /*icon*/ 31 | .ymPrompt_alert{ 32 | padding-left:90px; 33 | background:url(images/info.gif) no-repeat 20px 50% 34 | } 35 | .ymPrompt_succeed{ 36 | padding-left:90px; 37 | background:url(images/right.gif) no-repeat 20px 50% 38 | } 39 | .ymPrompt_error{ 40 | padding-left:90px; 41 | background:url(images/err.gif) no-repeat 20px 50% 42 | } 43 | .ymPrompt_confirm{ 44 | padding-left:90px; 45 | background:url(images/ask.gif) no-repeat 20px 50% 46 | } 47 | .ymPrompt_alert .ym-content,.ymPrompt_succeed .ym-content,.ymPrompt_error .ym-content,.ymPrompt_confirm .ym-content{padding:50px 0 0} 48 | /*图标公共定义*/ 49 | .ym-header-tools div{ 50 | cursor:pointer; 51 | width:16px;height:16px;float:left; 52 | } 53 | .ymPrompt_close{ 54 | background:url(images/ico.gif) no-repeat -48px 0; 55 | } 56 | .ymPrompt_max{ 57 | background:url(images/ico.gif) no-repeat -16px 0; 58 | } 59 | .ymPrompt_min{ 60 | background:url(images/ico.gif) no-repeat 0 0; 61 | } 62 | .ymPrompt_normal{ 63 | background:url(images/ico.gif) no-repeat -32px 0; 64 | } 65 | 66 | /*取消确认按钮样式*/ 67 | input.btnStyle{ 68 | background:#48BBFA; 69 | width:80px;height:21px;line-height:21px; 70 | font-size:12px;color:#fff;border:0;margin:10px 0 71 | } -------------------------------------------------------------------------------- /skin/black/ymPrompt.css: -------------------------------------------------------------------------------- 1 | /*container*/ 2 | #ym-window{ 3 | background:#fff;overflow:hidden; 4 | font-size:12px;font-family:'宋体' 5 | } 6 | 7 | .ym-tl{padding-left:3px;background:#333 url(images/title_bg_left.gif) no-repeat 0 0} 8 | .ym-tr{padding-right:3px;background:#333 url(images/title_bg_right.gif) no-repeat right 0;} 9 | .ym-tc{background:#333 url(images/title_bg_center.gif) repeat-x 0 0;overflow:hidden;height:25px;line-height:25px;} 10 | .ym-ttc{height:3px} 11 | .ym-header-text{font-size:12px;font-weight:bold;color:#fff;margin-left:5px;float:left} 12 | .ym-header-tools{float:right;margin-top:5px} 13 | 14 | /*body*/ 15 | .ym-ml{background:#5F5F68;padding-left:2px} 16 | .ym-mr{background:#5F5F68;padding-right:2px} 17 | .ym-mc{background:#fff;padding:0} 18 | .ym-body{overflow:auto;padding:0;font-size:12px;} 19 | .ym-header-tools strong{display:none} 20 | 21 | /*button*/ 22 | .ym-btn{text-align:center;background:#fff;} 23 | 24 | /*footer*/ 25 | .ym-bl{background:#5F5F68;padding-left:2px} 26 | .ym-br{background:#5F5F68;padding-right:2px} 27 | .ym-bc{background:#5F5F68;height:2px;font-size:2px} 28 | 29 | .ymPrompt_alert{ 30 | padding-left:90px; 31 | background:url(images/info.gif) no-repeat 20px 50% 32 | } 33 | .ymPrompt_succeed{ 34 | padding-left:90px; 35 | background:url(images/right.gif) no-repeat 20px 50% 36 | } 37 | .ymPrompt_error{ 38 | padding-left:90px; 39 | background:url(images/err.gif) no-repeat 20px 50% 40 | } 41 | .ymPrompt_confirm{ 42 | padding-left:90px; 43 | background:url(images/ask.gif) no-repeat 20px 50% 44 | } 45 | .ymPrompt_alert .ym-content,.ymPrompt_succeed .ym-content,.ymPrompt_error .ym-content,.ymPrompt_confirm .ym-content{padding:50px 3px 0} 46 | /*图标公共定义*/ 47 | .ym-header-tools div{ 48 | cursor:pointer; 49 | width:15px;height:15px;float:left;margin:0 1px; 50 | background:url(images/ico.gif) no-repeat 0 0; 51 | } 52 | .ymPrompt_close{ 53 | background-position:-45px 0 !important; 54 | } 55 | .ymPrompt_max{ 56 | background-position:0 0 !important; 57 | } 58 | .ymPrompt_min{ 59 | background-position:-30px 0 !important; 60 | } 61 | .ymPrompt_normal{ 62 | background-position:-15px 0 !important; 63 | } 64 | /*取消确认按钮样式*/ 65 | input.btnStyle{ 66 | background:url(images/btn_bg.gif) no-repeat; 67 | width:80px;height:21px;line-height:21px; 68 | font-size:12px;color:#fff;border:0;margin:10px 0 69 | } -------------------------------------------------------------------------------- /skin/bluebar/ymPrompt.css: -------------------------------------------------------------------------------- 1 | /*container*/ 2 | #ym-window{ 3 | background:#BBD4F6;overflow:hidden; 4 | font-size:12px;font-family:'宋体' 5 | } 6 | 7 | .ym-tl{padding-left:3px;background:#1B386D url(images/title_bg_left.gif) no-repeat 0 0} 8 | .ym-tr{padding-right:3px;background:#1B386D url(images/title_bg_right.gif) no-repeat right 0;} 9 | .ym-tc{background:#1B386D url(images/title_bg_center.gif) repeat-x 0 0;overflow:hidden;height:25px;line-height:25px;} 10 | .ym-ttc{height:3px} 11 | .ym-header-text{font-size:12px;font-weight:bold;color:#fff;margin-left:5px;float:left} 12 | .ym-header-tools{float:right;margin-top:5px} 13 | .ym-header-tools strong{display:none} 14 | 15 | /*body*/ 16 | .ym-ml{background:#4A74BC;padding-left:2px} 17 | .ym-mr{background:#4A74BC;padding-right:2px} 18 | .ym-mc{background:#BBD4F6;padding:0} 19 | .ym-body{overflow:auto;padding:0;font-size:12px;} 20 | 21 | /*button*/ 22 | .ym-btn{text-align:center;background:#BBD4F6;} 23 | 24 | /*footer*/ 25 | .ym-bl{background:#4A74BC;padding-left:2px} 26 | .ym-br{background:#4A74BC;padding-right:2px} 27 | .ym-bc{background:#4A74BC;height:2px;font-size:2px} 28 | 29 | .ymPrompt_alert{ 30 | padding-left:90px; 31 | background:url(images/info.gif) no-repeat 20px 50% 32 | } 33 | .ymPrompt_succeed{ 34 | padding-left:90px; 35 | background:url(images/right.gif) no-repeat 20px 50% 36 | } 37 | .ymPrompt_error{ 38 | padding-left:90px; 39 | background:url(images/err.gif) no-repeat 20px 50% 40 | } 41 | .ymPrompt_confirm{ 42 | padding-left:90px; 43 | background:url(images/ask.gif) no-repeat 20px 50% 44 | } 45 | .ymPrompt_alert .ym-content,.ymPrompt_succeed .ym-content,.ymPrompt_error .ym-content,.ymPrompt_confirm .ym-content{padding:50px 3px 0} 46 | /*图标公共定义*/ 47 | .ym-header-tools div{ 48 | cursor:pointer; 49 | width:15px;height:15px;float:left;margin:0 1px; 50 | background:url(images/ico.gif) no-repeat 0 0; 51 | } 52 | .ymPrompt_close{ 53 | background-position:-45px 0 !important; 54 | } 55 | .ymPrompt_max{ 56 | background-position:0 0 !important; 57 | } 58 | .ymPrompt_min{ 59 | background-position:-30px 0 !important; 60 | } 61 | .ymPrompt_normal{ 62 | background-position:-15px 0 !important; 63 | } 64 | /*取消确认按钮样式*/ 65 | input.btnStyle{ 66 | background:url(images/btn_bg.gif) no-repeat; 67 | width:80px;height:21px;line-height:21px; 68 | font-size:12px;color:#000;border:0;margin:10px 0 69 | } -------------------------------------------------------------------------------- /skin/qq/ymPrompt.css: -------------------------------------------------------------------------------- 1 | /*container*/ 2 | #ym-window{ 3 | background:#fff;overflow:hidden; 4 | font-size:12px;font-family:'宋体' 5 | } 6 | 7 | /*header*/ 8 | .ym-tl{padding-left:3px;background:#CFD7EC url(images/title_bg_left.gif) no-repeat 0 0} 9 | .ym-tr{padding-right:3px;background:#CFD7EC url(images/title_bg_right.gif) no-repeat right 0;} 10 | .ym-tc{background:#CFD7EC url(images/title_bg_center.gif) repeat-x 0 0;overflow:hidden;height:25px;line-height:25px;} 11 | .ym-ttc{height:3px} 12 | .ym-header-text{font-size:12px;font-weight:bold;color:#fff;margin-left:5px;float:left} 13 | .ym-header-tools{float:right;margin-top:5px} 14 | .ym-header-tools strong{display:none} 15 | 16 | /*body*/ 17 | .ym-ml{background:url(images/win_l.gif) repeat-y 0 0;padding-left:3px;} 18 | .ym-mr{background:url(images/win_r.gif) repeat-y right 0;padding-right:3px;} 19 | .ym-mc{background:url(images/content_bg.gif) repeat-x 0 0;padding:0} 20 | .ym-body{overflow:auto;padding:0;font-size:12px;} 21 | 22 | /*button*/ 23 | .ym-btn{text-align:center} 24 | 25 | /*footer*/ 26 | .ym-bl{background:url(images/win_lb.gif) no-repeat 0 bottom;padding-left:3px} 27 | .ym-br{background:url(images/win_rb.gif) no-repeat right bottom;padding-right:3px} 28 | .ym-bc{background:url(images/win_b.gif) repeat-x 0 bottom;height:3px;font-size:3px} 29 | 30 | /*icon*/ 31 | .ymPrompt_alert{ 32 | padding-left:90px; 33 | background:url(images/info.gif) no-repeat 20px 50% 34 | } 35 | .ymPrompt_succeed{ 36 | padding-left:90px; 37 | background:url(images/right.gif) no-repeat 20px 50% 38 | } 39 | .ymPrompt_error{ 40 | padding-left:90px; 41 | background:url(images/err.gif) no-repeat 20px 50% 42 | } 43 | .ymPrompt_confirm{ 44 | padding-left:90px; 45 | background:url(images/ask.gif) no-repeat 20px 50% 46 | } 47 | .ymPrompt_alert .ym-content,.ymPrompt_succeed .ym-content,.ymPrompt_error .ym-content,.ymPrompt_confirm .ym-content{padding:50px 0 0} 48 | /*图标公共定义*/ 49 | .ym-header-tools div{ 50 | cursor:pointer; 51 | width:16px;height:16px;float:left;margin:0 1px; 52 | background:url(images/ico.gif) no-repeat 0 0; 53 | } 54 | .ymPrompt_close{ 55 | background-position:-16px 0 !important; 56 | } 57 | .ymPrompt_max{ 58 | background-position:0 -16px !important; 59 | } 60 | .ymPrompt_min{ 61 | background-position:0 0 !important; 62 | } 63 | .ymPrompt_normal{ 64 | background-position:-16px -16px !important; 65 | } 66 | 67 | /*取消确认按钮样式*/ 68 | input.btnStyle{ 69 | background:url(images/btn_bg.gif) no-repeat; 70 | width:80px;height:21px;line-height:21px; 71 | font-size:12px;color:#183C94;border:0;margin:10px 0 72 | } -------------------------------------------------------------------------------- /skin/vista/ymPrompt.css: -------------------------------------------------------------------------------- 1 | /*container*/ 2 | #ym-window{ 3 | background:#F4F4F4;overflow:hidden; 4 | font-size:12px;font-family:'宋体'; 5 | filter:progid:DXImageTransform.Microsoft.Shadow(Color=#ff666666, Strength=5, Direction=135); 6 | } 7 | 8 | .ym-tl{padding-left:3px;background:#DCE4F8 url(images/title_bg_left.gif) no-repeat 0 0} 9 | .ym-tr{padding-right:3px;background:#DCE4F8 url(images/title_bg_right.gif) no-repeat right 0;} 10 | .ym-tc{background:#DCE4F8 url(images/title_bg_center.gif) repeat-x 0 0;overflow:hidden;height:25px;line-height:25px;} 11 | .ym-ttc{height:3px} 12 | .ym-header-text{font-size:12px;font-weight:bold;color:#000;margin-left:5px;float:left} 13 | .ym-header-tools{float:right;margin-top:3px} 14 | .ym-header-tools strong{display:none} 15 | 16 | /*body*/ 17 | .ym-ml{background:url(images/win_l.gif) repeat-y 0 0;padding-left:3px;} 18 | .ym-mr{background:url(images/win_r.gif) repeat-y right 0;padding-right:3px;} 19 | .ym-mc{padding:0} 20 | .ym-body{overflow:auto;padding:0;font-size:12px;} 21 | 22 | /*button*/ 23 | .ym-btn{text-align:center} 24 | 25 | /*footer*/ 26 | .ym-bl{background:url(images/win_lb.gif) no-repeat 0 bottom;padding-left:3px} 27 | .ym-br{background:url(images/win_rb.gif) no-repeat right bottom;padding-right:3px} 28 | .ym-bc{background:url(images/win_b.gif) repeat-x 0 bottom;height:3px;font-size:3px} 29 | 30 | .ymPrompt_alert{ 31 | padding-left:90px; 32 | background:url(images/info.gif) no-repeat 20px 50% 33 | } 34 | .ymPrompt_succeed{ 35 | padding-left:90px; 36 | background:url(images/right.gif) no-repeat 20px 50% 37 | } 38 | .ymPrompt_error{ 39 | padding-left:90px; 40 | background:url(images/err.gif) no-repeat 20px 50% 41 | } 42 | .ymPrompt_confirm{ 43 | padding-left:90px; 44 | background:url(images/ask.gif) no-repeat 20px 50% 45 | } 46 | .ym-header-tools div{ 47 | cursor:pointer; 48 | width:25px;height:18px;float:left;margin:-3px 0px 49 | } 50 | .ymPrompt_close{ 51 | background:url(images/ico.gif) no-repeat -75px 0; 52 | width:44px !important; 53 | } 54 | .ymPrompt_max{ 55 | background:url(images/ico.gif) no-repeat -50px 0px; 56 | } 57 | .ymPrompt_min{ 58 | background:url(images/ico.gif) no-repeat -25px 0; 59 | } 60 | .ymPrompt_normal{ 61 | background:url(images/ico.gif) no-repeat 0 0; 62 | } 63 | 64 | .ymPrompt_alert .ym-content,.ymPrompt_succeed .ym-content,.ymPrompt_error .ym-content,.ymPrompt_confirm .ym-content{padding:50px 0 0} 65 | 66 | /*取消确认按钮样式*/ 67 | input.btnStyle{ 68 | background:url(images/btn_bg.gif) no-repeat; 69 | width:80px;height:21px;line-height:21px; 70 | font-size:12px;color:#000;border:0;margin:10px 0 71 | } -------------------------------------------------------------------------------- /skin/dmm-green/ymPrompt.css: -------------------------------------------------------------------------------- 1 | /*container*/ 2 | #ym-window{ 3 | background:#F0FAFF;overflow:hidden; 4 | font-size:12px;font-family:'宋体' 5 | } 6 | 7 | .ym-tl{padding-left:3px;background:#CFD7EC url(images/title_bg_left.gif) no-repeat 0 0} 8 | .ym-tr{padding-right:3px;background:#CFD7EC url(images/title_bg_right.gif) no-repeat right 0;} 9 | .ym-tc{background:#CFD7EC url(images/title_bg_center.gif) repeat-x 0 0;overflow:hidden;height:28px;line-height:30px;} 10 | .ym-ttc{height:3px} 11 | .ym-header-text{font-size:12px;font-weight:bold;color:#fff;padding-left:28px;background: url(images/titleIco.gif) no-repeat 1px 1px;float:left} 12 | .ym-header-tools{float:right;margin-top:3px} 13 | .ym-header-tools strong{display:none} 14 | 15 | /*body*/ 16 | .ym-ml{background:url(images/win_l.gif) repeat-y 0 0;padding-left:3px;} 17 | .ym-mr{background:url(images/win_r.gif) repeat-y right 0;padding-right:3px;} 18 | .ym-mc{padding:0} 19 | .ym-body{overflow:auto;padding:0;font-size:12px;color:#0076A9} 20 | 21 | /*button*/ 22 | .ym-btn{text-align:center} 23 | 24 | /*footer*/ 25 | .ym-bl{background:url(images/win_lb.gif) no-repeat 0 bottom;padding-left:3px} 26 | .ym-br{background:url(images/win_rb.gif) no-repeat right bottom;padding-right:3px} 27 | .ym-bc{background:url(images/win_b.gif) repeat-x 0 bottom;height:3px;font-size:3px} 28 | 29 | .ymPrompt_alert{ 30 | padding-left:90px; 31 | background:url(images/info.gif) no-repeat 20px 50% 32 | } 33 | .ymPrompt_succeed{ 34 | padding-left:90px; 35 | background:url(images/right.gif) no-repeat 20px 50% 36 | } 37 | .ymPrompt_error{ 38 | padding-left:90px; 39 | background:url(images/err.gif) no-repeat 20px 50% 40 | } 41 | .ymPrompt_confirm{ 42 | padding-left:90px; 43 | background:url(images/ask.gif) no-repeat 20px 50% 44 | } 45 | .ymPrompt_close{ 46 | cursor:pointer; 47 | background:url(images/close.gif) no-repeat 0 0; 48 | width:22px;height:22px; 49 | } 50 | .ymPrompt_alert .ym-content,.ymPrompt_succeed .ym-content,.ymPrompt_error .ym-content,.ymPrompt_confirm .ym-content{padding:50px 0 0} 51 | /*图标公共定义*/ 52 | .ym-header-tools div{ 53 | cursor:pointer; 54 | width:22px;height:22px;float:left;margin:0 0; 55 | background:url(images/ico.gif) no-repeat; 56 | } 57 | .ymPrompt_close{ 58 | background-position:-66px 0 !important; 59 | } 60 | .ymPrompt_max{ 61 | background-position:0 0 !important; 62 | } 63 | .ymPrompt_min{ 64 | background-position:-44px 0 !important; 65 | } 66 | .ymPrompt_normal{ 67 | background-position:-22px 0 !important; 68 | } 69 | /*取消确认按钮样式*/ 70 | input.btnStyle{ 71 | background:url(images/btn_bg.gif) no-repeat; 72 | width:80px;height:23px;line-height:23px; 73 | font-size:12px;color:#fff;font-weight:bold;border:0;margin:10px 0 74 | } -------------------------------------------------------------------------------- /changelog.md: -------------------------------------------------------------------------------- 1 | ## 2013-03-09 2 | 1. 增加disableDrag参数,可配置弹出层不可拖动。 3 | 4 | ## 2009-03-02 5 | 1. 完善skin中的css,所有皮肤均支持最大化最小化按钮。 6 | 2. 修改CSS,解决当内容过高时消息框被撑变形的问题。 7 | 3. 解决SSL协议下出现安全警告的问题。 8 | 4. 支持配置是否允许在消息框中使用右键,及是否允许选择消息框中内容。 9 | 10 | ## 2009-02-28 11 | 1. 实现最大化按钮显示时,双击标题栏可以进行最大化/常态的切换。 12 | 2. 解决iframe模式时有时iframe滚动条不能滚动的bug。 13 | 3. 解决在子页面中调用父页面的ymPrompt弹出方法时传入的(btn设置/自定义坐标)无效的bug。 14 | 4. 解决iframe模式时,向下拖动不流畅的问题。 15 | 5. 解决前一次最大化/最小化状态下关闭对话框后,下次点击最大化最小化按钮无效的bug 16 | 17 | ## 2009-02-26 18 | 1. 支持定义内容样式class。 19 | 2. 删除事件绑定的addEvent中的e=e||event,addEvent对于任何浏览器默认都会传入event。 20 | 3. 支持最大化最小化. 支持配置最大化最小化按钮是否显示。 21 | 4. 增加max,min,normal三个方法用于设定窗口状态。 22 | 5. 解决IE下有时报“IE无法打开INTERNET站点”的错误。 23 | 24 | ## 2009-02-19 25 | 1. 调整了Simple皮肤样式 26 | 2. 实现IE下的弹出框阴影 27 | 3. 支持淡入淡出式的弹出框,支持自定义渐变速度 28 | 4. 解决连续调用弹出时,最后的弹出会覆盖前面的弹出的问题,实现按照调用顺序显示。 29 | 5. 解决自定义坐标在fixPosition:true模式下和fixedPosition:false模式下解析不一致的问题。 30 | 6. 完善对普通参数支持方式部分的实现,实现普通传参和JSON参数可配置项一致。 31 | 32 | ## 2009-02-16 33 | 1. 增加simple和simpleGray两个简易皮肤。 34 | 2. 增加closeBtn参数,用于设定是否显示关闭按钮 35 | 3. 解决拖动弹出框时在IE下光标不为十字拖动图标的问题。 36 | 4. IE下可以遮盖frameset(不能兼容其它浏览器,因此不建议使用)。 37 | 38 | ## 2009-02-15 39 | 1. 当窗体透明度设置为1时则不起用alpha透明度,提高性能。 40 | 2. 弹出框默认不允许拖出窗口(dragOut:false),符合大多数需求。 41 | 3. 创建按钮部分代码的优化 42 | 4. 解决FF下弹出层没有禁止右键的问题。 43 | 5. 解决IE标准模式下拖动不流畅的问题。 44 | 6. 弹出框默认随滚动条滚动(fixPosition:true),符合大多数需求。 45 | 7. 对IE标准模式及其它浏览器使用position:fixed定位弹出窗,滚动时弹出窗口无闪烁现象。 46 | 8. 文件编码都转为utf-8编码,可更好的与各种网页编码结合使用。 47 | 48 | ## 2009-02-07: 49 | 1. 修改组件对css设置部分的代码,修改setStyle为setCss,减少页面reflow次数。 50 | 2. 解决IE中在拖动弹出框时页面闪烁的问题。 51 | 3. 其它一些内部代码的优化和调整。 52 | 4. 窗口resize时重新定位弹出窗口的位置,确保在页面可见范围内。 53 | 5. 新增winAlpha参数,定义弹出窗口拖动时的窗体的透明。 54 | 55 | ## 2009-02-05: 56 | 1. 优化键盘监听部分的代码。 57 | 2. 解决弹出的iframe页面中弹出的弹出窗口关闭后,键盘监听没有取消的bug。 58 | 3. 解决在弹出框拖出页面范围后,出现遮罩不完全的bug。 59 | 60 | ## 2009-02-04: 61 | 1. 解决了当页面内容较少时弹出层不能完全遮罩页面的bug。 62 | 2. 修正了demo中的一些问题 63 | 3. iframe参数支持传入object来实现设置iframe对象的属性(如id,name等)。 64 | 4. 增加getButtons方法,用于获取当前弹出窗口中的按钮对象集合。 65 | 5. 简化初始化组件接口部分的代码。 66 | 6. 调整及完善demo示例。 67 | 68 | ## 2009-02-03: 69 | 1. 解决弹出提示框后按下ctrl键报错的bug。 70 | 2. 优化程序内部代码,页面退出时自动解除绑定的事件。 71 | 3. 实现当重复引入ymPrompt.js时,只执行一次组件解析。 72 | 4. 支持配置是否显示遮罩(showMask)。 73 | 5. 支持配置弹出窗口显示在哪个位置(9个内置位置和自定义坐标)。 74 | 6. 弹出窗口后只禁用F1-F12及tab键,以便于对弹出窗口内的内容(如输入框)进行操作。 75 | 7. 所有事件监听由监听变量值改为动态add/remove Event的方式。 76 | 8. 支持esc键关闭弹出框。 77 | 9. 替换数组for循环为while循环结构 78 | 10. 解决IE Resize时遮罩层宽高不能正确计算的问题。 79 | 11. 多语言支持,可以自定义显示的语言内容,如“确定”,“取消”等。 80 | 12. 可通过参数OK/CANCEL配置两种内置“确定”和“取消”按钮。 81 | 13. 解决页面Object对象遮盖弹出框的问题(对Object元素进行动态显示和隐藏)。 82 | 14. 解决当btn设置为空数组[]时报错的bug。 83 | 15. 解决IE中鼠标不能在浏览器之外拖动的问题。 84 | 16. 解决Iframe模式下拖动不流畅的问题。 85 | 86 | ## 2008-12-17: 87 | 1. 删除代码多余的一行代码 88 | 2. 增加titleBar参数,用于控制是否显示标题栏 89 | 90 | ## 2008-12-15: 91 | 1. 修改源码中一处笔误(对功能无影响)var c=[]改为{}。 92 | 93 | ## 2008-12-12: 94 | 1. 修改程序代码,防止因为页面加载比较慢时调用组件函数失败的bug。 95 | 2. 修改组件参数覆盖机制,使之更加合理。 96 | 3. 修改getPage方法调用失败的bug。 97 | 98 | ## 2008-12-10: 99 | 1. 增加autoClose,fixPosition,dragOut 100 | 2. 增加一些属性和操作接口 101 | 102 | ## 2008-7-21: 103 | 1. 解决了与页面window.onload事件冲突的bug。 104 | 2. 更新css,解决消息字体在部分浏览器下字体难看的问题。 105 | 3. 修改了组件按钮生成方式. 按钮点击事件的回调方式及tab/方向键切换按钮焦点部分代码的实现,准备下个版本支持多按钮/用户自定义按钮/不显示按钮。 106 | 4. 修改了DEMO,增加换肤演示。 107 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ymPrompt消息提示组件 4.1 2 | =============================== 3 | 4 | ## 组件说明 5 |     在web开发中,对于浏览器默认的消息提示框(如alert,confirm等)外观无法控制,同时我们经常希望能实现一些window.open之类的弹出框,但window.open弹出框存在诸多问题,如可能被拦截,界面不美观等。 6 |     为了实现更好的界面效果和控制,于是模拟系统的消息提示框及弹出窗口实现了该组件。在外观上可以通过css进行完全的控制。 7 | 8 | ## demo地址 9 | http://ajaxbbs.net/ymPrompt/demo.html 10 | 11 | ## 组件介绍 12 | 1. 调用简单,直接使用ymPrompt.alert()的方式调用,传入相应的参数即可。 13 | 2. 完美兼容各类浏览器,在以下浏览器测试通过:IE6.0+、FF1.5+、Opear9+、Safari3.1、Google Chrome 0.3.154,完美兼容HTML4/XHTML1.0页面渲染模式。 14 | 3. 完全的CSS皮肤定制功能,所有外观包括显示图标/关闭按钮等都可以通过css设置。目前提供了五种皮肤,Vista、QQ、dmm-green、ExtBlue和BlackColl。有兴趣可以修改样式表文件定义新的皮肤。 15 | 4. 提供五种消息类型。分别为消息提示、成功信息、错误信息、询问信息、弹出窗口。 16 | 5. 支持对显示的操作按钮的自定义功能,如不显示按钮,或者显示“是、否、取消”等按钮,支持自定义图标。 17 | 6. 弹出消息框时屏蔽页面其它元素的操作,自动隐藏页面select及iframe下select(无限级select隐藏),并遮罩iframe/object等元素。 18 | 7. 页面select控件状态还原时保持原状态,即如果原来select就是隐藏的,则消息框弹出并关闭后该select仍保持隐藏状态,而只显示原本显示的select。 19 | 8. 消息组件弹出时屏蔽除Tab和回车外的几乎所有键盘操作(包括F5),“消息确认框”支持“tab键/左右方向键”切换组件按钮焦点。 20 | 9. 可以页面加载的任意时间调用,如页面初始化时(onload之前)调用、页面加载完成后调用。 21 | 10. 支持通过JSON(推荐)和传统的参数两种传入方式。如ymprompt.alert('消息内容',300,200,'消息标题',handler)和ymprompt.alert({message:'消息内容',width:300,height:200,title:'消息标题',handler:handler}),这两种写法是等价的。 22 | 11. 只需要一个回调函数,可捕获确定、取消、关闭按钮及各种自定义按钮的点击事件。 23 | 12. 无侵入性,组件对外只暴露一个ymPrompt变量,有效防止与页面程序变量的冲突。 24 | 13. 程序(js)与样式(css)的完全分离,用户可根据需要加载对应css样式。 25 | 14. 文件小,4.0版压缩后仅为9kb。 26 | 15. 可实现语言的本地化,可用于英文等版本的系统中。 27 | 16. 支持:自定义按钮/图标、是否显示标题栏、是否允许拖出窗口范围、是否随滚动条滚动、弹出框默认显示位置(8方向)、遮罩外观及是否显示等控制。 28 | 17. 支持定义窗体拖动时窗体的透明度。 29 | 18. 支持渐变式弹出和隐藏,支持定义渐变速度 30 | 19. 支持连续多次调用弹出框,组件按照调用顺序显示(关闭当前弹出后自动显示下一个弹出) 31 | 20. 支持配置最大化、最小化、关闭按钮是否显示。 32 | 33 | ## 更新日志 34 | https://github.com/yemoo/ymPrompt/blob/master/changelog.md 35 | 36 | ## 调用方法及参数说明: 37 | 1. 在页面中引入ymPrompt.js。如:`` 38 | 2. 在页面中引入对应的皮肤文件的CSS,如:`` 39 | 3. 自定义组件的默认配置信息(此步骤可选,该方法可以在任意时间调用) 40 | 在页面的js中通过`ymPrompt.setDefaultCfg(cfg)`方法修改组件部分或全部的默认属性。如:`ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'})` 41 | 4. 根据您的需要调用相应的消息函数: 42 | ```js 43 | ymPrompt.alert(参数) //消息提示类型 44 | ymPrompt.succeedInfo(参数) //成功信息类型 45 | ymPrompt.errorInfo(参数) //错误信息类型 46 | ymPrompt.confirmInfo(参数) //询问消息类型 47 | ymPrompt.win(参数) //自定义窗口类型 48 | ``` 49 | 50 | ## 参数传入方式 51 | #### 第一种 52 | 即传统的参数传入,按照顺序传入相应的参数值即可(一定要按照顺序),对于不需要设定的值请传入null。如`ymPrompt.alert('内容',null,null,'标题')` 53 | **参数顺序:** message,width,height,title,handler,maskAlphaColor,maskAlpha,iframe,icoCls,btn,autoClose,fixPosition,dragOut,titleBar,showMask,winPos,winAlpha 54 | #### 第二种 55 | 即JSON的传入方式(推荐),需要指定字段名,没有顺序,根据需要设定相关属性。如`ymPrompt.alert({title:'标题',message:'内容'})` 56 | 57 | ## 参数含义 58 | 所有参数均为可选,不传则使用默认参数值 59 | 60 | **message:**消息组件要显示的内容,默认为“内容”。 61 | **width:**消息框的宽度,默认为300。 62 | **height:**消息框的高度,默认为185。 63 | **title:**消息组件标题,默认为“标题” 64 | **handler:**回调函数。当确定/取消/关闭按钮被点击时会触发该函数并传入点击的按钮标识。如ok代表确定,cancel代表取消,close代表关闭 65 | **maskAlphaColor:**遮罩的颜色,默认为黑色。 66 | **maskAlpha:**遮罩的透明度,默认为0.1。 67 | **fixPosition:**设定是否弹出框随滚动条一起浮动,保持在屏幕的固定位置,默认为true 68 | **disableDrag:**是否禁止拖动弹出层,默认否(false)。 69 | **dragOut:**设定是否允许拖出屏幕范围,默认为false。 70 | **autoClose:**设定用户点击窗口中按钮后自动关闭窗口,默认为true(设定为false后程序中可以通过调用close方法关闭) 71 | **titleBar:**是否显示标题栏,默认显示。注意,如果没有标题栏需要自己在程序中控制关闭 72 | **showMask:**是否显示遮罩层,默认为true 73 | **winPos:**弹出窗口的位置,支持8种内置位置(c,l,t,r,b,lt,rt,lb,rb)及自定义窗口坐标,默认为c。 74 | 各参数意义:c:页面中间,l:页面左侧,t:页面顶部,r:页面右侧,b:页面顶部,lt:左上角,rt:右上角,lb:左下角,rb:右下角 75 | **winAlpha:**弹出窗体拖动时的透明度,默认为0.8 76 | // 以下三个参数主要用于win方法(当然你也可以通过设定这些覆盖前面四个消息类型的默认属性)。 77 | **iframe:**是否使用iframe方法加载内容,该属性如果为true或者object,组件则尝试将message内容作为url进行加载(如果属性值为一个object,则将object的内容添加为iframe的属性,如`iframe:{id:'myId',name:'myName',src:'http://www.baidu.com'}` 则iframe的id为myId,name为myName,src为http://www.baidu.com)。默认为false。 78 | **icoCls:**图标类型。传入的内容为className,具体写法可以参考ymprompt.css中对图标的定义方式。默认为空。 79 | **btn:**按钮定义。传入的是数组形式。每个按钮的格式为['按钮文本','按钮标识'],如`[['确定','ok'],['取消','cancel'],['关闭','close']]等。注意单个按钮应该是这样的:[['确定','ok']] ` 80 | **closeBtn:**是否显示关闭按钮,默认为true(显示)。 81 | **showShadow:**是否启用弹出框阴影效果(IE Only),默认为false 82 | **useSlide:**是否启用弹出框的渐显渐隐效果,默认为false 83 | **slideCfg:**渐变效果的配置信息,参数格式为object,属性包括incerment:透明度每次增加的值,interval:变化的速度。例如:`{incerment:0.3,interval:50}`。该参数仅在useSlide为true时有效 84 | // 以下参数可用于对组件语言本地化,如用于英文等系统中 85 | **okTxt:**确定按钮的文本描述,默认为“确定” 86 | **cancelTxt:**取消按钮的文本描述,默认为“取消” 87 | **closeTxt:**关闭按钮的文本描述(鼠标放在关闭按钮上时显示),默认为“关闭” 88 | **minTxt:**最小化按钮的文本描述,默认为“最小化” 89 | **maxTxt:**最大化按钮的文本描述,默认为“最大化” 90 | **minBtn:**是否显示最小化按钮,默认为false 91 | **maxBtn:**是否显示最大化按钮,默认为false 92 | **allowSelect:**是否允许选择消息框内容,默认false 93 | **allowRightMenu:**是否允许在消息框使用右键,默认false 94 | 95 | ## 组件配置项默认值 96 | ```js 97 | { 98 | message: '内容', //消息框按钮 99 | width: 300, //宽 100 | height: 185, //高 101 | title: '标题', //消息框标题 102 | handler: function() {}, //回调事件 103 | maskAlphaColor: '#000', //遮罩透明色 104 | maskAlpha: 0.1, //遮罩透明度 105 | iframe: false, //iframe模式 106 | icoCls: '', //图标的样式 107 | btn: null, //按钮配置 108 | autoClose: true, //点击关闭、确定等按钮后自动关闭 109 | fixPosition: true, //随滚动条滚动 110 | disableDrag: false, //是否禁止拖动弹出层,默认否 111 | dragOut: false, //不允许拖出窗体范围 112 | titleBar: true, //显示标题栏 113 | showMask: true, //显示遮罩 114 | winPos: 'c', //在页面中间显示 115 | winAlpha:0.8, //拖动窗体时窗体的透明度 116 | closeBtn:true, //是否显示关闭按钮 117 | showShadow:false, //不显示阴影,只对IE有效 118 | useSlide:false, //不使用淡入淡出 119 | slideCfg:{increment:0.3,interval:50}, //淡入淡出配置 120 | //按钮文本,可通过自定义这些属性实现本地化 121 | closeTxt: '关闭', 122 | okTxt:' 确 定 ', 123 | cancelTxt:' 取 消 ', 124 | msgCls:'ym-content', //消息内容的样式 125 | minBtn:true, //是否显示最小化按钮 126 | minTxt:'最小化', 127 | maxBtn:true, //是否显示最大化按钮 128 | maxTxt:'最大化', 129 | allowSelect:false, //是否允许选择消息框内容,默认不允许 130 | allowRightMenu:false //是否允许在消息框使用右键,默认不允许 131 | } 132 | ``` 133 | 134 | ## 操作接口 135 | - **属性:** 136 | - **version:**当前版本号 如:`alert(ymPrompt.version)` 137 | - **pubDate:**当前版本的发布日期 如:`alert(ymPrompt.pubDate)` 138 | - **cfg:**组件的当前的默认配置 139 | - **方法:** 140 | - **setDefaultCfg(cfg):**设定组件的默认属性,设定后的所有弹出均默认采用cfg中的设置。 141 | 如:`ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'}); //设定遮罩层颜色为蓝色,透明度0.2` 142 | - **getPage():**在iframe窗口模式下,获取到iframe的dom对象。 143 | 如:`alert(ymPrompt.getPage().contentWindow.document.body.outerHTML); //获取iframe页面的html内容` 144 | - **resizeWin(w,h):**通过程序动态修改窗口的大小。参数:w:宽度,h:高度 145 | 如:`ymPrompt.resizeWin(400,300); //修改弹出框宽度为400px,高度为300px` 146 | - **doHandler(sign,autoClose):**模拟触发某个按钮的点击事件。参数sign:传给回调函数的标识,autoClose:是否自动关闭窗口(默认采用全局配置)如:`ymPrompt.doHandler('ok',false); //触发确定按钮的点击事件,并且执行完回调函数后不关闭窗口` 147 | - **getButtons():**获取当前弹出窗口的所有按钮对象,返回结果是一个对象集合(数组)。如:`var btnID=ymPrompt.getButtons()`[0].id;//获取第一个按钮的id 148 | - **close():**关闭当前弹出的窗口,如:`ymPrompt.close()` 149 | - **max():**最大化弹出窗口。 150 | - **min():**最小化弹出窗口 151 | - **normal():**窗口普通弹出状态 152 | 153 | ## 其他说明: 154 | 如果觉得“对象.方法”的调用方式比较麻烦,可以采用如下方式简化调用: 155 | 在调用之前设定var Alert=ymPrompt.alert。之后就可以使用Alert()的方式进行调用。 156 | -------------------------------------------------------------------------------- /ymPrompt.js: -------------------------------------------------------------------------------- 1 | eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(6(){u(1d.x)q;5 3e=6(2W){q 3k 3i(\'o\',"q 3z.4R.4O.4e(o)==\'[2Y "+2W+"]\'")};5 1W=3e(\'4D\'),2z=3e(\'3z\');1d.x={4K:\'4.1\',4F:\'54-5r-5s\',K:6(o,c,d){u(d)x.K(o,d);u(o&&c&&2z(c))1g(5 p 1F c)o[p]=c[p];q o},2C:[]};5 3y=[\'2w\',\'19\'],1E={},t;1H(t=3y.1p())x[t]=2H(\'0,6(){1E.\'+t+\'?1E.\'+t+\'.1h(1m):(1E.\'+t+\'=[1m])}\');5 1v=!+\'\\5y\';5 1N=R.5t==\'5k\';5 1t=1v&&/59 (\\d)\\./.3f(58.57)&&18(5z.$1)<7;5 2a=!1v||(!1t&&1N);5 $=6(C){q R.5e(C)};5 $M=6(J){q 18(J.D.M)||J.2f};5 Q=(6(){q 3k 3i(\'1r\',\'16\',\'J\',\'J=J||R;\'+(1d.3o?"J.3o(\'3D\'+1r,16)":\'J.5d(1r,16,B)\')+\';x.2C.1h([1r,16,J])\')})();5 1j=(6(){q 3k 3i(\'1r\',\'16\',\'J\',\'J=J||R;\'+(1d.3o?"J.1j(\'3D\'+1r,16)":\'J.5c(1r,16,B)\'))})();5 A=6(17,n,v){u(!17)q;u(2z(n)){1g(5 i 1F n)A(17,i,n[i]);q}u(1W(17)||/56|55/i.3f(\'\'+17)){1g(5 i=17.14-1;i>=0;i--)A(17[i],n,v);q}2v{17.D[n]=v}2r(e){}};5 15=0,X,3x=0;5 3b=6(1G,2s,1a,C){u(!1G)q;u(1W(1G)){5 2D,t=[],3A={1Y:[k.3Z,\'5a\'],4w:[k.3X,\'5j\']};1H(1G.14)(2D=1G.1p())&&t[t.1h(3b.K(1f,3A[2D]||2D))-1]||t.5v();q t}C=C||\'5w\'+3x++;1a=1a==2M?\'2M\':!!1a;q{C:C,1V:"<3t 2W=\'5l\' C=\'"+C+"\' 5n=\'x.2X(\\""+2s+"\\","+1a+")\' D=\'3J:5o\' E=\'5q 2V\' 5p=\'"+1G+"\' />"}};5 4t=6(F){u(!F)q X=\'\';u(!1W(F))F=[F];u(!F.14)q X=\'\';X=F.2B();5 1V=[];1H(F.14)1V.1h(F.1p().1V);q 1V.3R(\'&3v;&3v;\')};5 2O={2E:\'内容\',1u:4H,M:4G,1A:\'标题\',2V:6(){},4y:\'#4r\',2L:0.1,U:B,1I:\'\',F:1f,1a:V,29:V,43:B,3I:B,3m:V,3r:V,4g:\'c\',3E:0.8,4I:V,2q:B,1C:B,1S:{3c:0.3,34:50},4J:\'关闭\',3Z:\' 确 定 \',3X:\' 取 消 \',4k:\'y-4E\',4C:B,4M:\'最小化\',3F:B,53:\'最大化\',4l:B,4n:B},k={};(6(){5 G=R.2x,2t=1m.2t;u(!G||4N G!=\'2Y\')q Q(\'4W\',2t,1d);u(1v&&R.45!=\'44\')q Q(\'4Y\',6(){R.45=="44"&&2t()});G=1N?R.52:G;5 2l=R.4b(\'2l\').14;u(!1v&&2l)q;5 1U=6(){q k.29&&2a?[0,0]:[G.3s,G.3w]};5 2i=6(){5 L=1U();x.K(1w,{3u:18(H.D.1b)-L[0],3B:18(H.D.1c)-L[1]})};5 2G=\'1s:1B;1c:0;1b:0;I:S;3K-51:4V\';5 m=R.4U(\'m\');m.1k=["\',1t?(""):\'\',"",1t?"":\'\',"","<1O>0","<1O>1","<1O>r","","","","","",1v?"":\'\'].3R(\'\');R.2x.6e(m);5 1J=$(\'1J\');5 H=$(\'y-1d\');5 23=$(\'y-3S\');5 1z;5 2g=$(\'y-35\');5 1q=2g.P.P;5 2b=1q.P;5 25=2b.2N;5 1n=$(\'y-2o\').P.P.P;5 2A=$(\'y-3O\');5 4s=2A.P.P;5 4h=$(\'y-38\');5 1X=[1J];1t&&1X.1h($(\'3N\'));5 N=25.5X;5 1w={};5 1e=\'22\',2h=[0,0];5 2n=6(){5 L=1U();2h=[18(H.D.1b)-L[0],18(H.D.1c)-L[1]]};5 3p=6(){2n();1e=\'T\';N[1].P.1k=\'2\';N[1].1P=\'3P\';1D(G.2e,G.21,[0,0])};5 3l=6(){2n();1e=\'12\';N[0].P.1k=\'2\';N[0].1P=\'3P\';1D(0,$M(2g),2h)};5 24=6(1T){!1T&&1e==\'12\'&&2n();1e=\'22\';N[0].P.1k=\'0\';N[1].P.1k=\'1\';N[0].1P=\'3Q\';N[1].1P=\'3G\';1D.K(5G,1T?[]:[0,0,2h])};5 T,12;Q(\'3h\',12=6(){1e!=\'22\'?24():3l()},N[0]);Q(\'3h\',T=6(){1e!=\'22\'?24():3p()},N[1]);Q(\'5B\',6(e){k.3F&&(e.31||e.3a).46!=25&&T()},1q);Q(\'3h\',6(){x.2X(\'3j\')},N[2]);5 2c=6(){q[1l.T(G.5D,G.2e),1l.T(G.5E,G.21)]};5 3T=2c();5 11=1q.48&&1q;5 1L=6(v){!2l&&A(H,v==1&&1N?{1y:\'\',Y:\'\'}:{1y:\'4A(Y=\'+v*1x+\')\',Y:v})};5 2S=6(e){5 2m=1w.47+e.42;5 2d=1w.41+e.3W;u(!k.3I){5 L=1U(),32=L[0],2I=L[1];2m=1l.12(1l.T(2m,32),G.2e-H.2T+32);2d=1l.12(1l.T(2d,2I),G.21-H.2f+2I)}4o u(k.3r&&\'\'+3T!=\'\'+2c())28(V);A(1z,{1b:2m+\'Z\',1c:2d+\'Z\'})};5 20=6(){1L(1);1j("3V",2S,11);1j("3Y",20,11);2i();k.U&&A(1K().2N,\'I\',\'S\');11&&(1j("40",20,11),11.5U())};Q(\'5V\',6(e){u(k.43)q B;u((e.31||e.3a).46==25)q B;1L(k.3E);x.K(1w,{47:18(H.D.1b)-e.42,41:18(H.D.1c)-e.3W});Q("3V",2S,11);Q("3Y",20,11);u(k.U){5 1i={I:\'\'},2j=1K();1N&&1t&&x.K(1i,{1u:2j.2T,M:2j.2f});A(2j.2N,1i)}11&&(Q("40",20,11),11.48())},1q);5 4i=6(){A(H,{1b:1w.3u+G.3s+\'Z\',1c:1w.3B+G.3w+\'Z\'})};5 4v=6(e){5 W=e.W;u(W==27)2u();u(X){5 l=X.14,26;R.3C&&R.3C.C!=X[15].C&&(26=V);u(W==9||W==39)26&&(15=-1),$(X[++15==l?(--15):15].C).33();u(W==37)26&&(15=l),$(X[--15<0?(++15):15].C).33();u(W==13)q V}q 1R(e,(W>5F&&W<5Y)||W==9||W==13)};5 1R=6(e,d){e=e||6b;u(!d&&/3t|6a|5Z/i.3f((e.31||e.3a).68))q V;2v{e.6h=B;e.W=0}2r(69){e.4x&&e.4x()}q B};1J.4m=1R;5 28=6(4z){A(1X,\'I\',\'S\');5 2Z=2c();5 1Z=6(){A(1X,{1u:2Z[0]+\'Z\',M:2Z[1]+\'Z\',I:\'\'})};1v?4z===V?1Z():64(1Z,0):1Z();1e==\'12\'?3l():1e==\'T\'?3p():1D()};5 2y=6(1o){u(!k.3r)q;(1o===B?1j:Q)("1Z",28,1d);u(1o===B)q A(1X,\'I\',\'S\');A(1J,{3d:k.4y,1y:\'4A(Y=\'+k.2L*1x+\')\',Y:k.2L});28(V)};5 4u=6(f){f=1W(f)&&f.14==2?(f[0]+\'+{2},{3}+\'+f[1]):(2P[f]||2P[\'c\']);5 L=[G.2e-H.2T,G.21-H.2f].2B(1U());5 2Q=f.5R(/\\{(\\d)\\}/g,6(s,49){q L[49]}).5J(\',\');q[2H(2Q[0]),2H(2Q[1])]};5 2P={c:\'{0}/2+{2},{1}/2+{3}\',l:\'{2},{1}/2+{3}\',r:\'{0}+{2},{1}/2+{3}\',t:\'{0}/2+{2},{3}\',b:\'{0}/2,{1}+{3}\',5Q:\'{2},{3}\',5P:\'{2},{1}+{3}\',5O:\'{0}+{2},{1}+{3}\',5N:\'{0}+{2},{3}\'};5 1D=6(w,h,L){u(H.D.I==\'S\')q;h=18(h)||k.M;w=18(w)||k.1u;A(1z,{1u:w+\'Z\',M:h+\'Z\',1b:0,1c:0});L=4u(L||k.4g);A(1z,{1c:L[1]+\'Z\',1b:L[0]+\'Z\'});2i();A(1n,\'M\',h-$M(2g)-$M(2A)-$M(4h)+\'Z\');1N&&1t&&k.U&&A(1K(),{M:1n.21})};5 2k=[];5 1M=[];5 3q=6(1o){5 16=1o===B?1j:Q;16(\'5S\',k.29&&!2a?4i:2i,1d);A(1z,\'1s\',k.29&&2a?\'5W\':\'1B\');16(\'5T\',4v);u(1o===B){A(23,\'I\',\'S\');5 2J=6(){A(H,\'I\',\'S\');A(2k,\'2U\',\'1o\');2k=[];1M.1p();u(1M.14)x.19.K(1f,1M[0].2B(V))};5 4a=6(){5 O=1;5 2K=6(){O=1l.T(O-k.1S.3c,0);1L(O);u(O==0){2y(B);2J();4q(2p)}};2K();5 2p=4p(2K,k.1S.34)};k.1C?4a():2J();q}1g(5 o=R.4b(\'2Y\'),i=o.14-1;i>-1;i--)o[i].D.2U!=\'4c\'&&2k.1h(o[i])&&(o[i].D.2U=\'4c\');A([2b,25],\'I\',(k.3m?\'\':\'S\'));1q.1P=\'y-4d\'+(k.3m?\'\':\' y-5L\');2b.1k=k.1A;1g(5 i=0,c=[\'12\',\'T\',\'3j\'];i<3;i++){N[i].D.I=k[c[i]+\'5C\']?\'\':\'S\';N[i].1A=k[c[i]+\'5K\']}5 36=\'1s:1B;1u:1x%;M:1x%;1c:0;1b:0;Y:1;1y:O(Y=1x)\';1n.1k=!k.U?(\'\'+k.2E+\'\'):"";(6(17,J){1g(5 i 1F J)2v{17[i]=J[i]}2r(e){}})(1n.P,k.U);1n.1P="y-2x "+k.1I;A(2A,\'I\',((4s.1k=4t(3b(k.F)))?\'\':\'S\'));!k.1C&&k.2q&&A(23,\'I\',\'\');A(H,\'I\',\'\');24(V);1L(k.1C?0:1);k.1C&&(6(){5 O=0;5 3g=6(){O=1l.12(O+k.1S.3c,1);1L(O);u(O==1){4q(2p);k.2q&&A(23,\'I\',\'\')}};3g();5 2p=4p(3g,k.1S.34)})();X&&$(X[15=0].C).33();H.6d=k.4l?1f:1R;H.4m=k.4n?1f:1R};5 1T=6(){1z=[H].2B(k.2q?23:\'\');2y();3q()};5 2u=6(){!k.1C&&2y(B);3q(B)};5 1K=6(){q k.U?1n.P:1f};x.K(x,{3j:2u,T:T,12:12,22:24,1K:1K,19:6(3n,2F,19){u(!19&&1M.1h([3n,2F])&&1M.14>1)q;5 a=[].67.4e(3n,0),o={},j=-1;u(!2z(a[0])){1g(5 i 1F 2O)u(a[++j])o[i]=a[j]}4o{o=a[0]}x.K(k,x.K({},o,2F),x.2w());1g(5 i 1F k)k[i]=k[i]!=1f?k[i]:x.1i[i];1T()},2X:6(2s,1a,4Z){u(1a==2M?k.1a:1a)2u();2v{(k.2V)(2s)}2r(e){4f(e.2E)}},4L:1D,2w:6(1i){q x.1i=x.K({},1i,x.K({},x.1i,2O))},4X:6(){5 4j=X||[],F,2R=[];1H(F=4j.1p())2R.1h($(F.C));q 2R}});x.2w();5 t;1g(5 i 1F 1E)1H(t=1E[i].1p())x[i].K(1f,t);Q(\'5m\',6(){1H(x.2C.14)1j.K(1f,x.2C.1p())},1d)})()})();x.K(x,{4f:6(){x.19(1m,{1I:\'5u\',F:[\'1Y\']})},5b:6(){x.19(1m,{1I:\'5h\',F:[\'1Y\']})},5i:6(){x.19(1m,{1I:\'5g\',F:[\'1Y\']})},5f:6(){x.19(1m,{1I:\'5x\',F:[\'1Y\',\'4w\']})},4B:6(){x.19(1m)}});',62,392,'|||||var|function||||||||||||||curCfg||div||||return||||if|||ymPrompt|ym||setStyle|false|id|style|class|btn|rootEl|ym_win|display|obj|apply|pos|height|ym_ico|alpha|firstChild|addEvent|document|none|max|iframe|true|keyCode|btnCache|opacity|px||bindEl|min||length|btnIndex|fn|el|parseInt|show|autoClose|left|top|window|cur_state|null|for|push|cfg|detachEvent|innerHTML|Math|arguments|ym_body|visible|shift|ym_head|env|position|IE6|width|isIE|dragVar|100|filter|ym_wins|title|absolute|useSlide|setWinSize|_initFn|in|txt|while|icoCls|maskLevel|getPage|filterWin|cacheWin|isCompat|strong|className|index|keyEvent|slideCfg|init|getScrollPos|html|isArray|maskEl|OK|resize|uEvent|clientHeight|normal|ym_shadow|doNormal|ym_hTool|nofocus||resizeMask|fixPosition|useFixed|ym_hText|getWinSize|sTop|clientWidth|offsetHeight|ym_headbox|cur_cord|saveWinInfo|pg|_obj|frameset|sLeft|cal_cord|ml|it|showShadow|catch|sign|callee|destroy|try|setDefaultCfg|body|maskVisible|isObj|ym_btn|concat|eventList|item|message|fargs|maskStyle|eval|st|closeFn|hideFn|maskAlpha|undefined|nextSibling|dftCfg|posMap|arr|rBtn|mEvent|offsetWidth|visibility|handler|type|doHandler|object|size|src|srcElement|sl|focus|interval|tl|ifmStyle||bl||target|mkBtn|increment|background|objType|test|showFn|click|Function|close|new|doMin|titleBar|args|attachEvent|doMax|winVisible|showMask|scrollLeft|input|_offX|nbsp|scrollTop|seed|initFn|Object|dftBtn|_offY|activeElement|on|winAlpha|maxBtn|ymPrompt_max|header|dragOut|cursor|text|mr|10000|maskIframe|btnl|ymPrompt_normal|ymPrompt_min|join|shadow|winSize|javascript|mousemove|clientY|cancelTxt|mouseup|okTxt|losecapture|offY|clientX|disableDrag|complete|readyState|parentNode|offX|setCapture|s1|alphaClose|getElementsByTagName|hidden|tc|call|alert|winPos|ym_bottom|scrollEvent|btns|msgCls|allowSelect|oncontextmenu|allowRightMenu|else|setInterval|clearInterval|000|ym_btnContent|joinBtn|getPos|keydownEvent|CANCEL|preventDefault|maskAlphaColor|noDelay|Alpha|win|minBtn|Array|content|pubDate|185|300|closeBtn|closeTxt|version|resizeWin|minTxt|typeof|toString|9999|10001|prototype|move|tr|createElement|center|load|getButtons|readystatechange|closeFirst||align|documentElement|maxTxt|2013|nodelist|htmlcollection|userAgent|navigator|MSIE|ok|succeedInfo|removeEventListener|addEventListener|getElementById|confirmInfo|ymPrompt_error|ymPrompt_succeed|errorInfo|cancel|CSS1Compat|button|unload|onclick|pointer|value|btnStyle|03|09|compatMode|ymPrompt_alert|pop|ymPrompt_btn_|ymPrompt_confirm|v1|RegExp|relative|dblclick|Btn|scrollWidth|scrollHeight|110|this|frameborder|border|split|Txt|ttc|tools|rt|rb|lb|lt|replace|scroll|keydown|releaseCapture|mousedown|fixed|childNodes|123|textarea|bc|ymPrompt_close|808080|80|setTimeout|br|mc|slice|tagName|ex|select|event|pixelradius|onselectstart|appendChild|Blur|Microsoft|returnValue|progid|DXImageTransform'.split('|'),0,{})); -------------------------------------------------------------------------------- /ymPrompt.source.js: -------------------------------------------------------------------------------- 1 | /** 2 | * ymPrompt.js 消息提示组件 3 | * @author netman8410@163.com 4 | */ 5 | // IE8透明度解决方案 6 | //var location=window.location; 避免iframe跳转解决方案 7 | (function() { 8 | if (window.ymPrompt) return; 9 | var objType = function(type) { 10 | return new Function('o', "return Object.prototype.toString.call(o)=='[object " + type + "]'") 11 | }; //判断元素类型 12 | var isArray = objType('Array'), 13 | isObj = objType('Object'); //判断元素是否数组、object 14 | window.ymPrompt = { 15 | version: '4.1', 16 | pubDate: '2013-03-09', 17 | apply: function(o, c, d) { 18 | if (d) ymPrompt.apply(o, d); 19 | if (o && c && isObj(c)) for (var p in c) o[p] = c[p]; 20 | return o; 21 | }, 22 | eventList: [] 23 | }; 24 | /*初始化可能在页面加载完成调用的接口,防止外部调用失败。_initFn:缓存初始调用传入的参数*/ 25 | var initFn = ['setDefaultCfg', 'show'], _initFn = {}, t; 26 | while (t = initFn.shift()) ymPrompt[t] = eval('0,function(){_initFn.' + t + '?_initFn.' + t + '.push(arguments):(_initFn.' + t + '=[arguments])}'); 27 | /*以下为公用函数及变量*/ 28 | var isIE = !+'\v1'; //IE浏览器 29 | var isCompat = document.compatMode == 'CSS1Compat'; //浏览器当前解释模式 30 | var IE6 = isIE && /MSIE (\d)\./.test(navigator.userAgent) && parseInt(RegExp.$1) < 7; //IE6以下需要用iframe来遮罩 31 | var useFixed = !isIE || (!IE6 && isCompat); //滚动时,IE7+(标准模式)及其它浏览器使用Fixed定位 32 | var $ = function(id) {return document.getElementById(id)}; //获取元素 33 | var $height = function(obj) {return parseInt(obj.style.height) || obj.offsetHeight}; //获取元素高度 34 | var addEvent = (function() { 35 | return new Function('env', 'fn', 'obj', 'obj=obj||document;' + (window.attachEvent ? "obj.attachEvent('on'+env,fn)": 'obj.addEventListener(env,fn,false)') + ';ymPrompt.eventList.push([env,fn,obj])') 36 | })(); //事件绑定 37 | var detachEvent = (function() { 38 | return new Function('env', 'fn', 'obj', 'obj=obj||document;' + (window.attachEvent ? "obj.detachEvent('on'+env,fn)": 'obj.removeEventListener(env,fn,false)')) 39 | })(); //取消事件绑定 40 | 41 | //为元素的特定样式属性设定值 42 | var setStyle = function(el, n, v) { 43 | if (!el) return; 44 | if (isObj(n)) { 45 | for (var i in n) setStyle(el, i, n[i]); 46 | return; 47 | } 48 | /*dom数组或dom集合*/ 49 | if (isArray(el) || /htmlcollection|nodelist/i.test('' + el)) { 50 | for (var i = el.length - 1; i >= 0; i--) setStyle(el[i], n, v); 51 | return; 52 | } 53 | try { 54 | el.style[n] = v 55 | } catch(e) {} 56 | }; 57 | /*----------------和业务有关的公用函数-----------------*/ 58 | var btnIndex = 0, btnCache, seed = 0; //当前焦点的按钮的索引、当前存在的按钮、id种子 59 | /*创建按钮*/ 60 | var mkBtn = function(txt, sign, autoClose, id) { 61 | if (!txt) return; 62 | if (isArray(txt)) { 63 | /*无效按钮删除*/ 64 | var item, t = [], 65 | dftBtn = { 66 | OK: [curCfg.okTxt, 'ok'], 67 | CANCEL: [curCfg.cancelTxt, 'cancel'] 68 | }; 69 | while (txt.length)(item = txt.shift()) && t[t.push(mkBtn.apply(null, dftBtn[item] || item)) - 1] || t.pop(); 70 | return t; 71 | } 72 | id = id || 'ymPrompt_btn_' + seed++; 73 | autoClose = autoClose == undefined ? 'undefined': !!autoClose; 74 | return { 75 | id: id, 76 | html: "" 77 | }; 78 | }; 79 | /*生成按钮组合的html*/ 80 | var joinBtn = function(btn) { 81 | if (!btn) return btnCache = ''; 82 | if (!isArray(btn)) btn = [btn]; 83 | if (!btn.length) return btnCache = ''; 84 | btnCache = btn.concat(); 85 | var html = []; 86 | while (btn.length) html.push(btn.shift().html); 87 | return html.join('  '); 88 | }; 89 | /*默认显示配置及用户当前配置*/ 90 | var dftCfg = { 91 | message: '内容', //消息框内容 92 | width: 300, //消息框宽度 93 | height: 185, //消息框高度 94 | title: '标题', //消息框标题 95 | handler: function() {}, //回调事件,默认空函数 96 | maskAlphaColor: '#000', //遮罩透明色,默认黑色 97 | maskAlpha: 0.1, //遮罩透明度,默认0.1 98 | iframe: false, //iframe模式,默认不是 99 | icoCls: '', //消息框左侧图标,默认无 100 | btn: null, //消息框显示的按钮,默认无 101 | autoClose: true, //点击关闭、确定等按钮是否自动关闭,默认自动关闭 102 | fixPosition: true, //是否随滚动条滚动,默认是 103 | disableDrag: false, //是否禁止拖动弹出层,默认否 104 | dragOut: false, //是否允许拖出窗口范围,默认不允许 105 | titleBar: true, //是否显示标题栏,默认显示 106 | showMask: true, //是否显示遮罩,默认显示 107 | winPos: 'c', //消息框弹出的位置,默认在页面中间 108 | winAlpha: 0.8, //拖动时消息框的透明度,默认0.8 109 | closeBtn: true, //是否显示关闭按钮,默认显示 110 | showShadow: false, //是否显示消息框的阴影,默认不显示(IE支持) 111 | useSlide: false, //是否启用消息框的淡入淡出效果,默认不启用 112 | slideCfg: { //淡入淡出效果配置,useSlide=true时有效 113 | increment: 0.3, //每次渐变的值,值范围0-1 114 | interval: 50 //渐变的速度 115 | }, 116 | closeTxt: '关闭', //关闭按钮的提示文本 117 | okTxt: ' 确 定 ', //确定按钮的提示文本 118 | cancelTxt: ' 取 消 ', //取消按钮的提示文本 119 | msgCls: 'ym-content', //消息框内容的class名称,用于自定义验尸官,默认为ym-content,仅在iframe:false时有效 120 | minBtn: false, //是否显示最小化按钮,默认不显示 121 | minTxt: '最小化', //最小化按钮的提示文本 122 | maxBtn: false, //是否显示最大化按钮,默认不显示 123 | maxTxt: '最大化', //最大化按钮的提示文本 124 | allowSelect:false, //是否允许选择消息框内容,默认不允许 125 | allowRightMenu:false //是否允许在消息框使用右键,默认不允许 126 | },curCfg = {}; 127 | 128 | /*开始解析*/ 129 | (function() { 130 | var rootEl = document.body, callee = arguments.callee; 131 | if (!rootEl || typeof rootEl != 'object') return addEvent('load', callee, window); //等待页面加载完成 132 | /*防止在IE下因document未就绪而报“IE无法打开INTERNET站点的错”的错*/ 133 | if (isIE && document.readyState != 'complete') return addEvent('readystatechange',function() { 134 | document.readyState == "complete"&&callee() 135 | }); 136 | 137 | rootEl = isCompat ? document.documentElement: rootEl; //根据html Doctype获取html根节点,以兼容非xhtml的页面 138 | var frameset = document.getElementsByTagName('frameset').length; //是否frameset页面 139 | if (!isIE && frameset) return; //frameset页面且不是IE则直接返回,否则会出现错误。 140 | /*获取scrollLeft和scrollTop,在fixed定位时返回0,0*/ 141 | var getScrollPos = function() { 142 | return curCfg.fixPosition && useFixed ? [0, 0] : [rootEl.scrollLeft, rootEl.scrollTop]; 143 | }; 144 | /*保存窗口定位信息,弹出窗口相对页面左上角的坐标信息*/ 145 | var saveWinInfo = function() { 146 | var pos = getScrollPos(); 147 | ymPrompt.apply(dragVar, { 148 | _offX: parseInt(ym_win.style.left) - pos[0], 149 | _offY: parseInt(ym_win.style.top) - pos[1] 150 | }); 151 | }; 152 | /*-------------------------创建弹窗html-------------------*/ 153 | var maskStyle = 'position:absolute;top:0;left:0;display:none;text-align:center'; 154 | var div = document.createElement('div'); 155 | div.innerHTML = [ 156 | /*遮罩*/ 157 | "
', IE6 ? ("") : '', 158 | /*窗体*/ 159 | "", 160 | /*阴影*/ 161 | isIE ? "": ''].join(''); 162 | document.body.appendChild(div); 163 | /*窗口上的对象*/ 164 | /*mask、window*/ 165 | var maskLevel = $('maskLevel'); 166 | var ym_win = $('ym-window'); 167 | var ym_shadow = $('ym-shadow'); 168 | var ym_wins; 169 | /*header*/ 170 | var ym_headbox = $('ym-tl'); 171 | var ym_head = ym_headbox.firstChild.firstChild; 172 | var ym_hText = ym_head.firstChild; 173 | var ym_hTool = ym_hText.nextSibling; 174 | /*content*/ 175 | var ym_body = $('ym-ml').firstChild.firstChild.firstChild; 176 | /*button*/ 177 | var ym_btn = $('ym-btnl'); 178 | var ym_btnContent = ym_btn.firstChild.firstChild; 179 | /*bottom*/ 180 | var ym_bottom = $('ym-bl'); 181 | var maskEl = [maskLevel]; //遮罩元素 182 | IE6 && maskEl.push($('maskIframe')); 183 | var ym_ico = ym_hTool.childNodes; //右上角的图标 184 | var dragVar = {}; 185 | /*窗口的最大化最小化核心功能实现*/ 186 | var cur_state = 'normal', 187 | cur_cord = [0, 0]; //cur_cord记录最大化前窗口的坐标 188 | var cal_cord = function() { 189 | var pos = getScrollPos(); 190 | cur_cord = [parseInt(ym_win.style.left) - pos[0], parseInt(ym_win.style.top) - pos[1]] 191 | }; //保存坐标(相对页面左上角坐标) 192 | /*从常态到最大化*/ 193 | var doMax = function() { 194 | cal_cord(); //记录坐标,便于还原时使用 195 | cur_state = 'max'; 196 | ym_ico[1].firstChild.innerHTML = '2'; 197 | ym_ico[1].className = 'ymPrompt_normal'; 198 | setWinSize(rootEl.clientWidth, rootEl.clientHeight, [0, 0]); 199 | }; 200 | /*从正常到最小化*/ 201 | var doMin = function() { 202 | cal_cord(); 203 | cur_state = 'min'; 204 | ym_ico[0].firstChild.innerHTML = '2'; 205 | ym_ico[0].className = 'ymPrompt_normal'; 206 | setWinSize(0, $height(ym_headbox), cur_cord); //定位在当前坐标 207 | }; 208 | var doNormal = function(init) { //init=true,弹出时调用该函数 209 | ! init && cur_state == 'min' && cal_cord(); //从最小化过来重新获取坐标 210 | cur_state = 'normal'; 211 | ym_ico[0].firstChild.innerHTML = '0'; 212 | ym_ico[1].firstChild.innerHTML = '1'; 213 | ym_ico[0].className = 'ymPrompt_min'; 214 | ym_ico[1].className = 'ymPrompt_max'; 215 | setWinSize.apply(this, init ? [] : [0, 0, cur_cord]); 216 | }; 217 | var max, min; 218 | addEvent('click', min = function() { 219 | cur_state != 'normal' ? doNormal() : doMin(); 220 | }, 221 | ym_ico[0]); //最小化 222 | addEvent('click', max = function() { 223 | cur_state != 'normal' ? doNormal() : doMax(); 224 | }, 225 | ym_ico[1]); //最大化 226 | addEvent('dblclick', function(e) { 227 | /*如果操作元素是最大最小关闭按钮则不进行此处理*/ 228 | curCfg.maxBtn && (e.srcElement || e.target).parentNode != ym_hTool && max() 229 | }, 230 | ym_head); 231 | addEvent('click', function() { 232 | ymPrompt.doHandler('close'); 233 | }, 234 | ym_ico[2]); //关闭 235 | /*窗口最大化最小化核心部分结束*/ 236 | /*getWinSize取得页面实际大小*/ 237 | var getWinSize = function() { 238 | return [Math.max(rootEl.scrollWidth, rootEl.clientWidth), Math.max(rootEl.scrollHeight, rootEl.clientHeight)] 239 | }; 240 | var winSize = getWinSize(); //保存当前页面的实际大小 241 | /*事件绑定部分*/ 242 | var bindEl = ym_head.setCapture && ym_head; //绑定拖放事件的对象,只有Ie下bindEl有效 243 | /*窗体透明度控制*/ 244 | var filterWin = function(v) { 245 | /*鼠标按下时取消窗体的透明度,IE标准模式下透明度为1则直接清除透明属性,防止iframe窗口不能拖动滚动条*/ 246 | ! frameset && setStyle(ym_win, v == 1 && isCompat ? { 247 | filter: '', 248 | opacity: '' 249 | }: { 250 | filter: 'Alpha(opacity=' + v * 100 + ')', 251 | opacity: v 252 | }); 253 | }; 254 | /*mousemove事件*/ 255 | var mEvent = function(e) { 256 | var sLeft = dragVar.offX + e.clientX; 257 | var sTop = dragVar.offY + e.clientY; 258 | if (!curCfg.dragOut) { //页面可见区域内拖动 259 | var pos = getScrollPos(), 260 | sl = pos[0], 261 | st = pos[1]; 262 | sLeft = Math.min(Math.max(sLeft, sl), rootEl.clientWidth - ym_win.offsetWidth + sl); 263 | sTop = Math.min(Math.max(sTop, st), rootEl.clientHeight - ym_win.offsetHeight + st); 264 | } else if (curCfg.showMask && '' + winSize != '' + getWinSize()) //及时调整遮罩大小 265 | resizeMask(true); 266 | setStyle(ym_wins, { 267 | left: sLeft + 'px', 268 | top: sTop + 'px' 269 | }); 270 | }; 271 | /*mouseup事件*/ 272 | var uEvent = function() { 273 | filterWin(1); 274 | detachEvent("mousemove", mEvent, bindEl); 275 | detachEvent("mouseup", uEvent, bindEl); 276 | saveWinInfo(); //保存当前窗口的位置 277 | curCfg.iframe && setStyle(getPage().nextSibling, 'display', 'none'); 278 | /*IE下窗口外部拖动*/ 279 | bindEl && (detachEvent("losecapture", uEvent, bindEl), bindEl.releaseCapture()); 280 | }; 281 | addEvent('mousedown',function(e) { 282 | if (curCfg.disableDrag) return false; // 禁止拖动 2013-03-09 283 | if ((e.srcElement || e.target).parentNode == ym_hTool) return false; //点击操作按钮不进行启用拖动处理 284 | filterWin(curCfg.winAlpha); //鼠标按下时窗体的透明度 285 | /*鼠标与弹出框的左上角的位移差*/ 286 | ymPrompt.apply(dragVar, { 287 | offX: parseInt(ym_win.style.left) - e.clientX, 288 | offY: parseInt(ym_win.style.top) - e.clientY 289 | }); 290 | addEvent("mousemove", mEvent, bindEl); 291 | addEvent("mouseup", uEvent, bindEl); 292 | if (curCfg.iframe) { 293 | var cfg = {display: ''}, pg = getPage(); 294 | isCompat && IE6 && ymPrompt.apply(cfg, { 295 | width: pg.offsetWidth, 296 | height: pg.offsetHeight 297 | }); //IE6必须设置高度 298 | setStyle(pg.nextSibling, cfg) 299 | } 300 | /*IE下窗口外部拖动*/ 301 | bindEl && (addEvent("losecapture", uEvent, bindEl), bindEl.setCapture()); 302 | }, 303 | ym_head); 304 | /*页面滚动弹出窗口滚动*/ 305 | var scrollEvent = function() { 306 | setStyle(ym_win, { 307 | left: dragVar._offX + rootEl.scrollLeft + 'px', 308 | top: dragVar._offY + rootEl.scrollTop + 'px' 309 | }); 310 | }; 311 | /*键盘监听*/ 312 | var keydownEvent = function(e) { 313 | var keyCode = e.keyCode; 314 | if (keyCode == 27) destroy(); //esc键 315 | if (btnCache) { 316 | var l = btnCache.length, nofocus; 317 | /*tab键/左右方向键切换焦点*/ 318 | document.activeElement && document.activeElement.id != btnCache[btnIndex].id && (nofocus = true); 319 | if (keyCode == 9 || keyCode == 39) nofocus && (btnIndex = -1), 320 | $(btnCache[++btnIndex == l ? (--btnIndex) : btnIndex].id).focus(); 321 | if (keyCode == 37) nofocus && (btnIndex = l), 322 | $(btnCache[--btnIndex < 0 ? (++btnIndex) : btnIndex].id).focus(); 323 | if (keyCode == 13) return true; 324 | } 325 | /*禁止F1-F12/ tab 回车*/ 326 | return keyEvent(e, (keyCode > 110 && keyCode < 123) || keyCode == 9 || keyCode == 13); 327 | }; 328 | /*监听键盘事件*/ 329 | var keyEvent = function(e, d) { 330 | e = e || event; 331 | /*允许对表单项进行操作*/ 332 | if (!d && /input|select|textarea/i.test((e.srcElement || e.target).tagName)) return true; 333 | try { 334 | e.returnValue = false; 335 | e.keyCode = 0; 336 | } catch(ex) { 337 | e.preventDefault && e.preventDefault(); 338 | } 339 | return false; 340 | }; 341 | maskLevel.oncontextmenu = keyEvent; //禁止右键和选择 342 | /*重新计算遮罩的大小*/ 343 | var resizeMask = function(noDelay) { 344 | setStyle(maskEl, 'display', 'none'); //先隐藏 345 | var size = getWinSize(); 346 | var resize = function() { 347 | setStyle(maskEl, { 348 | width: size[0] + 'px', 349 | height: size[1] + 'px', 350 | display: '' 351 | }); 352 | }; 353 | isIE ? noDelay === true ? resize() : setTimeout(resize, 0) : resize(); 354 | cur_state == 'min' ? doMin() : cur_state == 'max' ? doMax() : setWinSize(); //最大化最小化状态还原 355 | }; 356 | /*蒙版的显示隐藏,state:true显示,false隐藏,默认为true*/ 357 | var maskVisible = function(visible) { 358 | if (!curCfg.showMask) return; //无遮罩 359 | (visible === false ? detachEvent: addEvent)("resize", resizeMask, window); //页面大小改变及时调整遮罩大小 360 | if (visible === false) return setStyle(maskEl, 'display', 'none'); //隐藏遮罩 361 | setStyle(maskLevel, { 362 | background: curCfg.maskAlphaColor, 363 | filter: 'Alpha(opacity=' + curCfg.maskAlpha * 100 + ')', 364 | opacity: curCfg.maskAlpha 365 | }); 366 | resizeMask(true); 367 | }; 368 | /*计算指定位置的坐标,返回数组*/ 369 | var getPos = function(f) { 370 | /*传入有效的数组,则采用用户坐标(需要做简单处理),否则根据传入字符串到map中匹配,如果匹配不到则默认采用c配置*/ 371 | f = isArray(f) && f.length == 2 ? (f[0] + '+{2},{3}+' + f[1]) : (posMap[f] || posMap['c']); 372 | var pos = [rootEl.clientWidth - ym_win.offsetWidth, rootEl.clientHeight - ym_win.offsetHeight].concat(getScrollPos()); 373 | var arr = f.replace(/\{(\d)\}/g,function(s, s1) {return pos[s1]}).split(','); 374 | return [eval(arr[0]), eval(arr[1])]; 375 | }; //9个常用位置常数 376 | var posMap = { 377 | c: '{0}/2+{2},{1}/2+{3}', 378 | l: '{2},{1}/2+{3}', 379 | r: '{0}+{2},{1}/2+{3}', 380 | t: '{0}/2+{2},{3}', 381 | b: '{0}/2,{1}+{3}', 382 | lt: '{2},{3}', 383 | lb: '{2},{1}+{3}', 384 | rb: '{0}+{2},{1}+{3}', 385 | rt: '{0}+{2},{3}' 386 | }; 387 | /*设定窗口大小及定位*/ 388 | var setWinSize = function(w, h, pos) { 389 | if (ym_win.style.display == 'none') return; //当前不可见则不处理 390 | /*默认使用配置的宽高*/ 391 | h = parseInt(h) || curCfg.height; 392 | w = parseInt(w) || curCfg.width; 393 | setStyle(ym_wins, { 394 | width: w + 'px', 395 | height: h + 'px', 396 | left: 0, 397 | top: 0 398 | }); 399 | pos = getPos(pos || curCfg.winPos); //支持自定义坐标,或者默认配置 400 | setStyle(ym_wins, { 401 | top: pos[1] + 'px', 402 | left: pos[0] + 'px' 403 | }); 404 | saveWinInfo(); //保存当前窗口位置信息 405 | setStyle(ym_body, 'height', h - $height(ym_headbox) - $height(ym_btn) - $height(ym_bottom) + 'px'); //设定内容区的高度 406 | isCompat && IE6 && curCfg.iframe && setStyle(getPage(), {height: ym_body.clientHeight}); //IE6标准模式下要计算iframe高度 407 | }; 408 | var _obj = []; //IE中可见的obj元素 409 | var cacheWin = []; //队列中的窗口 410 | var winVisible = function(visible) { 411 | var fn = visible === false ? detachEvent: addEvent; 412 | fn('scroll', curCfg.fixPosition && !useFixed ? scrollEvent: saveWinInfo, window); 413 | setStyle(ym_wins, 'position', curCfg.fixPosition && useFixed ? 'fixed': 'absolute'); 414 | fn('keydown', keydownEvent); 415 | if (visible === false) { //关闭 416 | setStyle(ym_shadow, 'display', 'none'); 417 | /*关闭窗口执行的操作*/ 418 | var closeFn = function() { 419 | setStyle(ym_win, 'display', 'none'); 420 | setStyle(_obj, 'visibility', 'visible'); 421 | _obj = []; //把当前弹出移除 422 | cacheWin.shift(); //读取队列中未执行的弹出 423 | if (cacheWin.length) ymPrompt.show.apply(null, cacheWin[0].concat(true)) 424 | }; 425 | /*渐变方式关闭*/ 426 | var alphaClose = function() { 427 | var alpha = 1; 428 | var hideFn = function() { 429 | alpha = Math.max(alpha - curCfg.slideCfg.increment, 0); 430 | filterWin(alpha); 431 | if (alpha == 0) { 432 | maskVisible(false); 433 | closeFn(); 434 | clearInterval(it); 435 | } 436 | }; 437 | hideFn(); 438 | var it = setInterval(hideFn, curCfg.slideCfg.interval); 439 | }; 440 | curCfg.useSlide ? alphaClose() : closeFn(); 441 | return; 442 | } 443 | for (var o = document.getElementsByTagName('object'), i = o.length - 1; i > -1; i--) o[i].style.visibility != 'hidden' && _obj.push(o[i]) && (o[i].style.visibility = 'hidden'); 444 | setStyle([ym_hText, ym_hTool], 'display', (curCfg.titleBar ? '': 'none')); 445 | ym_head.className = 'ym-tc' + (curCfg.titleBar ? '': ' ym-ttc'); //无标题栏 446 | ym_hText.innerHTML = curCfg.title; //标题 447 | for (var i = 0, c = ['min', 'max', 'close']; i < 3; i++) { 448 | ym_ico[i].style.display = curCfg[c[i] + 'Btn'] ? '': 'none'; 449 | ym_ico[i].title = curCfg[c[i] + 'Txt']; 450 | } 451 | /*iframe如果不加上opacity=100,则ym-win和用于遮罩iframe的div也透明时,iframe也就透明了*/ 452 | var ifmStyle = 'position:absolute;width:100%;height:100%;top:0;left:0;opacity:1;filter:alpha(opacity=100)'; 453 | ym_body.innerHTML = !curCfg.iframe ? ('
' + curCfg.message + '
') : "
"; //内容 454 | (function(el, obj) { 455 | for (var i in obj) try { 456 | el[i] = obj[i] 457 | } catch(e) {} 458 | })(ym_body.firstChild, curCfg.iframe); //为iframe添加自定义属性 459 | ym_body.className = "ym-body " + curCfg.icoCls; //图标类型 460 | setStyle(ym_btn, 'display', ((ym_btnContent.innerHTML = joinBtn(mkBtn(curCfg.btn))) ? '': 'none')); //没有按钮则隐藏 461 | ! curCfg.useSlide && curCfg.showShadow && setStyle(ym_shadow, 'display', ''); 462 | setStyle(ym_win, 'display', ''); 463 | doNormal(true); 464 | filterWin(curCfg.useSlide ? 0 : 1); //此处使用filter同时可以解决IE非标准模式下有时下边会出现1px空白,使内容与下部不衔接的问题 465 | /*渐变方式显示*/ 466 | curCfg.useSlide && (function() { 467 | var alpha = 0; 468 | var showFn = function() { 469 | alpha = Math.min(alpha + curCfg.slideCfg.increment, 1); 470 | filterWin(alpha); 471 | if (alpha == 1) { 472 | clearInterval(it); 473 | curCfg.showShadow && setStyle(ym_shadow, 'display', '') 474 | } 475 | }; 476 | showFn(); 477 | var it = setInterval(showFn, curCfg.slideCfg.interval); 478 | })(); 479 | btnCache && $(btnCache[btnIndex = 0].id).focus(); //第一个按钮获取焦点 480 | /*是否禁止选择、禁止右键*/ 481 | ym_win.onselectstart = curCfg.allowSelect?null:keyEvent; 482 | ym_win.oncontextmenu = curCfg.allowRightMenu?null:keyEvent; 483 | }; //初始化 484 | var init = function() { 485 | ym_wins = [ym_win].concat(curCfg.showShadow ? ym_shadow: ''); //是否使用阴影 486 | maskVisible(); 487 | winVisible(); 488 | }; //销毁 489 | var destroy = function() { ! curCfg.useSlide && maskVisible(false); 490 | winVisible(false); 491 | }; //取得iframe 492 | var getPage = function() { 493 | return curCfg.iframe ? ym_body.firstChild: null 494 | }; 495 | ymPrompt.apply(ymPrompt, { 496 | close: destroy, 497 | max: max, 498 | min: min, 499 | normal: doNormal, 500 | getPage: getPage, 501 | /*显示消息框,fargs:优先配置,会覆盖args中的配置*/ 502 | /*show 强制显示*/ 503 | show: function(args, fargs, show) { //如果有窗口未关闭则将本次传入的信息放到队列里 504 | if (!show && cacheWin.push([args, fargs]) && cacheWin.length > 1) return; 505 | /*支持两种参数传入方式:(1)JSON方式 (2)多个参数传入*/ 506 | var a = [].slice.call(args, 0), o = {}, j = -1; 507 | if (!isObj(a[0])) { 508 | for (var i in dftCfg) if (a[++j]) o[i] = a[j]; 509 | } else { 510 | o = a[0]; 511 | } 512 | ymPrompt.apply(curCfg, ymPrompt.apply({}, o, fargs), ymPrompt.setDefaultCfg()); //先还原默认配置 513 | /*修正curCfg中的无效值(null/undefined)改为默认值*/ 514 | for (var i in curCfg) curCfg[i] = curCfg[i] != null ? curCfg[i] : ymPrompt.cfg[i]; 515 | init(); 516 | }, 517 | doHandler: function(sign, autoClose, closeFirst) { 518 | if (autoClose == undefined ? curCfg.autoClose: autoClose) destroy(); 519 | try { (curCfg.handler)(sign) 520 | } catch(e) { 521 | alert(e.message) 522 | }; 523 | }, 524 | resizeWin: setWinSize, 525 | /*设定默认配置*/ 526 | setDefaultCfg: function(cfg) { 527 | return ymPrompt.cfg = ymPrompt.apply({}, cfg, ymPrompt.apply({}, ymPrompt.cfg, dftCfg)); 528 | }, 529 | getButtons: function() { 530 | var btns = btnCache || [], btn, rBtn = []; 531 | while (btn = btns.shift()) rBtn.push($(btn.id)); 532 | return rBtn; 533 | } 534 | }); 535 | ymPrompt.setDefaultCfg(); //初始化默认配置 536 | /*执行用户初始化时的调用*/ 537 | var t; 538 | for (var i in _initFn) while (t = _initFn[i].shift()) ymPrompt[i].apply(null, t); 539 | /*取消事件绑定*/ 540 | addEvent('unload', function() { 541 | while (ymPrompt.eventList.length) detachEvent.apply(null, ymPrompt.eventList.shift()); 542 | }, window); 543 | })(); 544 | })(); //各消息框的相同操作 545 | ymPrompt.apply(ymPrompt, { 546 | alert: function() { 547 | ymPrompt.show(arguments, { 548 | icoCls: 'ymPrompt_alert', 549 | btn: ['OK'] 550 | }); 551 | }, 552 | succeedInfo: function() { 553 | ymPrompt.show(arguments, { 554 | icoCls: 'ymPrompt_succeed', 555 | btn: ['OK'] 556 | }); 557 | }, 558 | errorInfo: function() { 559 | ymPrompt.show(arguments, { 560 | icoCls: 'ymPrompt_error', 561 | btn: ['OK'] 562 | }); 563 | }, 564 | confirmInfo: function() { 565 | ymPrompt.show(arguments, { 566 | icoCls: 'ymPrompt_confirm', 567 | btn: ['OK', 'CANCEL'] 568 | }); 569 | }, 570 | win: function() { 571 | ymPrompt.show(arguments); 572 | } 573 | }); 574 | -------------------------------------------------------------------------------- /demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | ymPrompt消息提示组件4.1版[2013-03-09]DEMO演示及使用简介 5 | 6 | 7 | 8 | 9 | 50 | 80 | 81 | 82 |

ymPrompt消息提示组件4.0版[2013-03-09]DEMO演示及使用简介

83 |

页面IFRAME:

84 |
85 | 86 | 91 | 99 |
87 |

页面文本:

88 | 页面文本1
89 | 页面文本2 90 |
92 |

页面Select选择框

93 | 98 |
100 |
101 | 更换皮肤:  修改默认配置:拖动窗体的透明度: 遮罩颜色: 遮罩透明度:  110 | 114 |
115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 |
组件调用方式1(传统参数传入方式):
示例调用方法
ymPrompt.alert('http://www.qq.com',null,null,'确认要提交吗?',handler)
ymPrompt.succeedInfo($('txt').innerHTML,400,260,null,handler2)
ymPrompt.errorInfo('操作失败!',null,null,null,handler)
ymPrompt.confirmInfo('信息确认框功能测试',null,null,null,handler)
ymPrompt.win('<div class=\'myContent\'>普通弹出窗口</div>',300,200,'普通弹窗测试')
ymPrompt.win('http://www.163.com',500,300,'网易官方网站',handler,null,null,{id:'a'})
146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 |
组件调用方式2(JSON方式):
示例源码
ymPrompt.alert({message:'http://www.qq.com',slideShowHide:false,title:'确认要提交吗?',handler:handler})
ymPrompt.succeedInfo({message:$('txt').innerHTML,width:400,height:260,handler:handler2})
ymPrompt.errorInfo({message:'操作失败!',handler:handler})
ymPrompt.confirmInfo({message:'信息确认框功能测试',handler:handler})
ymPrompt.win({message:'普通弹出窗口',width:300,height:200,msgCls:'myContent',title:'普通弹窗测试'})
ymPrompt.win({message:'http://www.163.com',width:500,height:300,title:'网易官方网站',handler:handler,maxBtn:true,minBtn:true,iframe:true})
178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 |
其他使用方式演示:
示例源码
ymPrompt.alert()
ymPrompt.alert('消息内容')
ymPrompt.alert({title:'我的标题',message:'我的内容'})
ymPrompt.win({title:'iframe模式',fixPosition:true,maxBtn:true,minBtn:true,iframe:{id:'myId',name:'myName',src:'http://www.baidu.com'}})
ymPrompt.alert({title:'fixPosition使用演示',message:'我不会随滚动条一起滚动',fixPosition:false})
ymPrompt.alert({title:'disableDrag使用演示',message:'该窗口不能拖动',disableDrag:true})
ymPrompt.alert({title:'dragOut使用演示',message:'我可以拖出到窗口可见区域以外',dragOut:true})
ymPrompt.alert({title:'autoClose使用演示',message:'程序控制关闭',autoClose:false,handler:autoClose})
ymPrompt.win({message:'<br><center>无标题栏</center>',handler:noTitlebar,btn:[['关闭我']],titleBar:false})
ymPrompt.win({message:'<br><center>无关闭按钮</center>',btn: ['OK'],closeBtn:false})
ymPrompt.alert({message:'不显示遮罩',title:'不显示遮罩',showMask:false})
ymPrompt.alert({message:'右下角弹出',title:'右下角弹出',winPos:'rb'})
ymPrompt.alert({message:'自定义弹出位置',title:'右下角弹出',winPos:[200,1000]})
ymPrompt.win({message:'自定义按钮',title:'自定义按钮测试',handler:testHd,btn:[['是','yes'],['否','no'],['取消','cancel']]})
ymPrompt.alert({message:'拖动窗体时的透明度为0.5',title:'自定义按钮测试',winAlpha:0.5})
ymPrompt.alert({message:'显示窗体阴影',title:'显示阴影',showShadow:true})
ymPrompt.alert({message:'窗体淡入淡出',title:'淡入淡出',useSlide:true,handler:slideHd})
ymPrompt.alert({message:'自定义淡入淡出',title:'淡入淡出',useSlide:true,slideCfg:{increment:0.1,interval:100},handler:slideHd})
ymPrompt.alert({message:'显示最大化最小化按钮',title:'最大化最小化',minBtn:true,maxBtn:true})
ymPrompt.win({message:'自定义内容样式',title:'自定义内容样式',msgCls:'customCls'})
ymPrompt.alert({message:'允许在消息框中使用右键',title:'允许右键',allowRightMenu:true})
ymPrompt.alert({message:'允许选择消息框中内容',title:'允许选择',allowSelect:true})
ymPrompt.confirmInfo({icoCls:'',msgCls:'confirm',message:'请输入您的姓名:<br><input type='text' id='myInput' onfocus='this.select()' />',title:'请输入您的名字',height:150,handler:getInput,autoClose:false})" />
278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 | 311 | 312 | 313 | 314 | 315 | 316 | 317 | 318 | 319 | 320 | 321 |
组件方式及属性调用演示:
示例源码
ymPrompt.win('<div class=fmt>版本号:'+ymPrompt.version+'<br>发布日期:'+ymPrompt.pubDate+'<br>组件当前配置信息:'+json2str(ymPrompt.cfg)+'</div>',250,500)
ymPrompt.win({message:'iframe.html',width:500,height:300,title:'getPage测试',handler:handlerIframe,autoClose:false,iframe:true})
ymPrompt.alert({message:'一秒钟后我的大小改为[400,300]',height:200,width:250});
setTimeout(function(){ymPrompt.resizeWin(400,300)},1000);
ymPrompt.alert({message:'两秒钟后自动点击确定按钮',handler:handler});
setTimeout(function(){ymPrompt.doHandler('ok')},1000);
ymPrompt.alert({message:'点击确定显示按钮的内容',autoClose:false,btn:[['是','yes'],['否','no']],handler:getButtons})
ymPrompt.alert({message:'悬浮右下角,模拟qq',fixPosition:true,winPos:'rb',showMask:false})
ymPrompt.alert({message:'窗口状态控制',width:400,autoClose:false,btn:[['最大化','max'],['最小化','min'],['正常态','normal'],['关闭','close']],handler:stateHd})
en();ymPrompt.alert({message:'英文化成功'})
cn();ymPrompt.alert({message:'中文化成功'})
322 |
323 |

调用方法及参数说明

324 |
    325 |
  1. 在页面中引入ymPrompt.js。如:<script type="text/javascript" src="ymPrompt.js"></script>
  2. 326 |
  3. 在页面中引入对应的皮肤文件的CSS,如:<link rel="stylesheet" type="text/css" href="skin/qq/ymPrompt.css" />
  4. 327 |
  5. 自定义组件的默认配置信息(此步骤可选,该方法可以在任意时间调用) 328 |
    页面的js中通过ymPrompt.setDefaultCfg(cfg)方法修改组件部分或全部的默认属性。 329 |
    如:ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'}) 330 |
    331 |
    组件的默认配置(对于没有设定的项将采用该配置项的默认值): 332 |
    { 333 |
       message: '内容', //消息框按钮 334 |
       width: 300, //宽 335 |
       height: 185, //高 336 |
       title: '标题', //消息框标题 337 |
       handler: function() {}, //回调事件 338 |
       maskAlphaColor: '#000', //遮罩透明色 339 |
       maskAlpha: 0.1, //遮罩透明度 340 |
    341 |
       iframe: false, //iframe模式 342 |
       icoCls: '', //图标的样式 343 |
       btn: null, //按钮配置 344 |
       autoClose: true, //点击关闭、确定等按钮后自动关闭 345 |
       fixPosition: true, //随滚动条滚动 346 |
       disableDrag: false, //是否禁止拖动弹出层,默认否 347 |
       dragOut: false, //不允许拖出窗体范围 348 |
       titleBar: true, //显示标题栏 349 |
       showMask: true, //显示遮罩 350 |
       winPos: 'c', //在页面中间显示 351 |
       winAlpha:0.8, //拖动窗体时窗体的透明度 352 |
       closeBtn:true, //是否显示关闭按钮 353 |
       showShadow:false, //不显示阴影,只对IE有效 354 |
       useSlide:false, //不使用淡入淡出 355 |
       slideCfg:{increment:0.3,interval:50}, //淡入淡出配置 356 |

       //按钮文本,可通过自定义这些属性实现本地化 357 |
       closeTxt: '关闭', 358 |
       okTxt:' 确 定 ', 359 |
       cancelTxt:' 取 消 ', 360 |
       msgCls:'ym-content' //消息内容的样式 361 |
       minBtn:false, //不显示最小化按钮 362 |
       minTxt:'最小化', 363 |
       maxBtn:false, //不显示最大化按钮 364 |
       maxTxt:'最大化' 365 |
       allowSelect:false, //是否允许选择消息框内容,默认不允许 366 |
       allowRightMenu:false //是否允许在消息框使用右键,默认不允许 367 |
    } 368 |
  6. 369 |
  7. 根据您的需要调用相应的消息函数(两种参数传入方式): 370 |
      371 |
    • ymPrompt.alert(参数) //消息提示类型
    • 372 |
    • ymPrompt.succeedInfo(参数) //成功信息类型
    • 373 |
    • ymPrompt.errorInfo(参数) //错误信息类型
    • 374 |
    • ymPrompt.confirmInfo(参数) //询问消息类型

    • 375 |
    • ymPrompt.win(参数) //自定义窗口类型
    • 376 |
    377 | 378 |
    参数传入方式包含两种: 379 |
      380 |
    • 第一种即传统的参数传入,按照顺序传入相应的参数值即可(一定要按照顺序),对于不需要设定的值请传入null。如ymPrompt.alert('内容',null,null,'标题') 381 |
      参数顺序上面的默认配置中参数顺序一致

      382 |
    • 383 |
    • (推荐)第二种即JSON的传入方式,需要指定字段名,没有顺序,根据需要设定相关属性。如ymPrompt.alert({title:'标题',message:'内容'})
    • 384 |
    385 | 386 |
    五个方法的参数意义完全相同(所有参数均为可选,不传入则使用默认参数值),具体含义如下: 387 |
      388 |
    • message:消息组件要显示的内容,默认为“内容”。
    • 389 |
    • width:消息框的宽度,默认为300。
    • 390 |
    • height:消息框的高度,默认为185。
    • 391 |
    • title:消息组件标题,默认为“标题”
    • 392 |
    • handler:回调函数。当确定/取消/关闭按钮被点击时会触发该函数并传入点击的按钮标识。如ok代表确定,cancel代表取消,close代表关闭
    • 393 |
    • maskAlphaColor:遮罩的颜色,默认为黑色。
    • 394 |
    • maskAlpha:遮罩的透明度,默认为0.1。

    • 395 |
    • fixPosition:设定是否弹出框随滚动条一起浮动,保持在屏幕的固定位置,默认为true
    • 396 |
    • disableDrag:是否禁止拖动弹出层,默认否(false)
    • 397 |
    • dragOut:设定是否允许拖出屏幕范围,默认为false。
    • 398 |
    • autoClose:设定用户点击窗口中按钮后自动关闭窗口,默认为true(设定为false后程序中可以通过调用close方法关闭)。
    • 399 |
    • titleBar:是否显示标题栏,默认显示。注意,如果没有标题栏需要自己在程序中控制关闭。
    • 400 |
    • showMask:是否显示遮罩层,默认为true
    • 401 |
    • winPos:弹出窗口的位置,支持8种内置位置(c,l,t,r,b,lt,rt,lb,rb)及自定义窗口坐标,默认为c。 402 |
        各参数意义:c:页面中间,l:页面左侧,t:页面顶部,r:页面右侧,b:页面顶部,lt:左上角,rt:右上角,lb:左下角,rb:右下角
    • 403 |
    • winAlpha:弹出窗体拖动时的透明度,默认为0.8 404 |

      //以下三个参数主要用于win方法(当然你也可以通过设定这些覆盖前面四个消息类型的默认属性)。 405 |
    • 406 |
    • iframe:是否使用iframe方法加载内容,该属性如果为true或者object,组件则尝试将message内容作为url进行加载(如果属性值为一个object,则将object的内容添加为iframe的属性,如iframe:{id:'myId',name:'myName',src:'http://www.baidu.com'}则iframe的id为myId,name为myName,src为http://www.baidu.com)。默认为false。
    • 407 |
    • icoCls:图标类型。传入的内容为className,具体写法可以参考ymprompt.css中对图标的定义方式。默认为空。
    • 408 |
    • btn:按钮定义。传入的是数组形式。每个按钮的格式为['按钮文本','按钮标识'],
      如[['确定','ok'],['取消','cancel'],['关闭','close']]等。 409 |
      注意单个按钮应该是这样的:[['确定','ok']]
    • 410 |
    • closeBtn:是否显示关闭按钮,默认为true(显示)。

    • 411 |
    • showShadow:是否启用弹出框阴影效果(IE Only),默认为false
    • 412 |
    • useSlide:f是否启用弹出框的渐显渐隐效果,默认为false
    • 413 |
    • slideCfg:渐变效果的配置信息,参数格式为object,属性包括incerment:透明度每次增加的值,interval:变化的速度。例如:{incerment:0.3,interval:50}。该参数仅在useSlide为true时有效 414 |

      //以下参数可用于对组件语言本地化,如用于英文等系统中
    • 415 |
    • okTxt:确定按钮的文本描述,默认为“确定”
    • 416 |
    • cancelTxt:取消按钮的文本描述,默认为“取消”
    • 417 |
    • closeTxt:关闭按钮的文本描述(鼠标放在关闭按钮上时显示),默认为“关闭”
    • 418 | 419 |
    • minTxt:最小化按钮的文本描述,默认为“最小化”
    • 420 |
    • maxTxt:最大化按钮的文本描述,默认为“最大化”

    • 421 | 422 |
    • minBtn:是否显示最小化按钮,默认为false
    • 423 |
    • maxBtn:是否显示最大化按钮,默认为false

    • 424 | 425 |
    • allowSelect:是否允许选择消息框内容,默认为false
    • 426 |
    • allowRightMenu:是否允许在消息框中使用右键,默认为false
    • 427 |
    428 |
  8. 429 |
  9. 操作接口: 430 |

    431 |
    432 |
    属性:
    433 |
    version:当前版本号 如:alert(ymPrompt.version)
    434 |
    pubDate:当前版本的发布日期 如:alert(ymPrompt.pubDate);
    435 |
       cfg:组件的当前的默认配置
    436 | 437 |
    方法:
    438 |
    setDefaultCfg(cfg):设定组件的默认属性,设定后的所有弹出均默认采用cfg中的设置。
    439 | 如:ymPrompt.setDefaultCfg({maskAlpha:0.2,maskAlphaColor:'#00f'}); //设定遮罩层颜色为蓝色,透明度0.2

    440 | 441 |
    getPage():在iframe窗口模式下,获取到iframe的dom对象。
    442 | 如:alert(ymPrompt.getPage().contentWindow.document.body.outerHTML); //获取iframe页面的html内容

    443 | 444 |
    resizeWin(w,h):通过程序动态修改窗口的大小。参数:w:宽度,h:高度
    445 | 如:ymPrompt.resizeWin(400,300); //修改弹出框宽度为400px,高度为300px

    446 | 447 |
    doHandler(sign,autoClose):模拟触发某个按钮的点击事件。参数sign:传给回调函数的标识,autoClose:是否自动关闭窗口(默认采用全局配置)
    448 | 如:ymPrompt.doHandler('ok',false); //触发确定按钮的点击事件,并且执行完回调函数后不关闭窗口

    449 |
    getButtons():获取当前弹出窗口的所有按钮对象,返回结果是一个对象集合(数组)。
    450 | 如:var btnID=ymPrompt.getButtons()[0].id; //获取第一个按钮的id

    451 |
    close():关闭当前弹出的窗口 452 | 如:ymPrompt.close()

    453 |
    max():最大化弹出窗口。

    454 |
    min():最小化弹出窗口

    455 |
    normal():窗口普通弹出状态
    456 |
    457 |
  10. 458 |
  11. 其他说明:如果觉得“对象.方法”的调用方式比较麻烦,可以采用如下方式简化调用: 459 |
    在调用之前设定var Alert=ymPrompt.alert。之后就可以使用Alert()的方式进行调用。 460 |
  12. 461 |
462 | 548 | 549 | 550 | --------------------------------------------------------------------------------