artDialog —— 经典的网页对话框组件,内外皆用心雕琢。
|
1 2 3 |
<script src="lib/jquery-1.10.2.js"></script> <link rel="stylesheet" href="css/ui-dialog.css"> <script src="dist/dialog-min.js"></script> |
|
1 |
var dialog = require('./src/dialog'); |
注意:内部依赖全局模块require('jquery'),请注意全局模块配置是否正确。seajs加载示例
- 如果需要支持 iframe 内容与拖拽,请引用加强版 dialog-plus.js
- jquery 最低要求版本为
1.7+
|
1 2 3 4 5 6 7 8 |
var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!' }); d.show(); |
|
1 2 3 4 5 6 |
var d = dialog({ title: 'message', content: '<input autofocus />' }); d.showModal(); |
|
1 2 3 4 5 6 |
var d = dialog({ content: 'Hello World!', quickClose: true// 点击空白处快速关闭 }); d.show(document.getElementById('quickref-bubble')); |
1.确定与取消按钮:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
var d = dialog({ title: '提示', content: '按钮回调函数返回 false 则不许关闭', okValue: '确定', ok: function () { this.title('提交中…'); return false; }, cancelValue: '取消', cancel: function () {} }); d.show(); |
2.指定更多按钮:
请参考 button 方法或参数。
|
1 2 3 4 5 6 7 8 |
var d = dialog({ content: '对话框将在两秒内关闭' }); d.show(); setTimeout(function () { d.close().remove(); }, 2000); |
|
1 2 3 4 5 6 7 8 |
var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', ok: function () {}, statusbar: '<label><input type="checkbox">不再提醒</label>' }); d.show(); |
按钮事件返回 false 则不会触发关闭。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', ok: function () { var that = this; this.title('正在提交..'); setTimeout(function () { that.close().remove(); }, 2000); return false; }, cancel: function () { alert('不许关闭'); return false; } }); d.show(); |
|
1 2 3 4 5 6 7 8 |
var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', cancel: false, ok: function () {} }); d.show(); |
artDialog 提供了一个增强版用来支持复杂的 iframe 套嵌的页面,可以在顶层页面创建一个可供 iframe 访问的对话框创建方法,例如:
|
1 2 3 |
seajs.use(['dialog/src/dialog-plus'], function (dialog) { window.dialog = dialog; }); |
然后子页面就可以通过top.dialog控制对话框了。
小提示:增强版的选项比标准版多了
url、oniframeload这几个字段。
若无特别说明,方法均支持链式调用。
显示对话框。
默认居中显示,支持传入元素节点或者事件对象。
HTMLElement:可吸附到元素上,同时对话框将呈现气泡样式。Event Object:根据event.pageX与event.pageY定位。|
1 2 3 4 |
var d = dialog(); d.content('hello world'); d.show(document.getElementById('api-show')); |
|
1 2 3 4 5 6 7 8 9 10 |
var d = dialog({ id: 'api-show-dialog', quickClose: true, content: '右键菜单' }); $(document).on('contextmenu', function (event) { d.show(event); return d.destroyed; }); |
显示一个模态对话框。
其余特性与参数可参见show([anchor])方法。
|
1 2 3 4 5 6 |
var d = dialog({ title: 'message', content: '<input autofocus />' }); d.showModal(); |
关闭(隐藏)对话框。
可接收一个返回值,可以参见 returnValue。
注意:close()方法只隐藏对话框,不会在 DOM 中删除,删除请使用remove()方法。
销毁对话框。
注意:不同于close([result])方法,remove()方法会从 DOM 中移出对话框相关节点,销毁后的对话框无法再次使用。
对话框按钮点击后默认会依次触发 close()、remove() 方法。如果想手动控制对话框关闭可以如下操作:
|
1 2 3 4 |
var d = dialog(); // [..] d.close().remove(); |
写入对话框内容。
html参数支持String、HTMLElement类型。
传入字符串:
|
1 2 3 4 |
var d = dialog(); d.content('hello world'); d.show(); |
传入元素节点:
|
1 2 3 4 5 6 |
var elem = document.getElementById('test'); dialog({ content: elem, id: 'EF893L' }).show(); |
写入对话框标题。
|
1 2 3 4 |
var d = dialog(); d.title('hello world'); d.show(); |
设置对话框宽度。
|
1 2 3 4 5 6 |
dialog({ content: 'hello world' }) .width(320) .show(); |
设置对话框高度。
|
1 2 3 4 5 6 |
dialog({ content: 'hello world' }) .height(320) .show(); |
手动刷新对话框位置。
通常动态改变了内容尺寸后需要刷新对话框位置。
自定义按钮。
参数请参考 选项button;同时支持传入 HTML 字符串填充按钮区域。
聚焦对话框(置顶)。
让对话框失去焦点。
添加事件。
支持的事件有:show、close、beforeremove、remove、reset、focus、blur
删除事件。
根据获取打开的对话框实例。
注意:这是一个静态方法。
获取当前(置顶)对话框实例。
注意:这是一个静态方法。
设置消息内容。
String, HTMLElement
传入字符串:
|
1 2 3 4 |
dialog({ content: 'hello world!' }).show(); |
传入元素节点:
|
1 2 3 4 5 6 |
var elem = document.getElementById('test'); dialog({ content: elem, id: 'EF893L' }).show(); |
标题内容。
String
|
1 2 3 4 |
dialog({ title: 'hello world!' }).show(); |
状态栏区域 HTML 代码。
可以实现类似“不再提示”的复选框。注意:必须有按钮才会显示。
String
|
1 2 3 4 5 6 7 8 |
var d = dialog({ title: '欢迎', content: '欢迎使用 artDialog 对话框组件!', ok: function () {}, statusbar: '<label><input type="checkbox">不再提醒</label>' }); d.show(); |
确定按钮。
回调函数this指向dialog对象,执行完毕默认关闭对话框,若返回 false 则阻止关闭。
Function
|
1 2 3 4 5 6 7 8 9 10 |
dialog({ ok: function () { this .title('消息') .content('hello world!') .width(130); return false; } }).show(); |
(默认值: "ok") 确定按钮文本。
String
|
1 2 3 4 5 6 7 8 |
dialog({ okValue: '猛击我', ok: function () { this.content('hello world!'); return false; } }).show(); |
取消按钮。
取消按钮也等同于标题栏的关闭按钮,若值为false则不显示关闭按钮。回调函数this指向dialog对象,执行完毕默认关闭对话框,若返回false则阻止关闭。
Function, Boolean
|
1 2 3 4 5 6 7 8 |
dialog({ title: '消息', ok: function () {}, cancel: function () { alert('取消'); } }).show(); |
|
1 2 3 4 5 6 7 |
dialog({ title: '消息', content: '不显示关闭按钮', ok: function () {}, cancel: false }).show(); |
(默认值: "cancel") 取消按钮文本。
String
|
1 2 3 4 5 6 7 |
dialog({ cancelValue: '取消我', cancel: function () { alert('关闭'); } }).show(); |
(默认值: true) 是否显示取消按钮。
Boolean
|
1 2 3 4 5 6 7 8 9 10 |
dialog({ title: '提示', content: '这是一个禁止关闭的对话框,并且没有取消按钮', cancel: function () { alert('禁止关闭'); return false; }, cancelDisplay: false }).show(); |
自定义按钮组。
Array
| 名称 | 类型 | 描述 |
|---|---|---|
| value | String | 按钮显示文本 |
| callback | Function | (可选) 回调函数this指向dialog对象,执行完毕默认关闭与销毁对话框(依次执行close()与remove()),若返回false则阻止关闭与销毁 |
| autofocus | Boolean | (默认值:false) 是否自动聚焦 |
| disabled | Boolean | (默认值: false) 是否禁用 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
dialog({ button: [ { value: '同意', callback: function () { this .content('你同意了'); return false; }, autofocus: true }, { value: '不同意', callback: function () { alert('你不同意') } }, { id: 'button-disabled', value: '无效按钮', disabled: true }, { value: '关闭我' } ] }).show(); |
设置对话框 内容 宽度。
String, Number
|
1 2 3 4 |
dialog({ width: 460 }).show(); |
|
1 2 3 4 |
dialog({ width: '20em' }).show(); |
设置对话框 内容 高度。
String, Number
|
1 2 3 4 |
dialog({ height: 460 }).show(); |
|
1 2 3 4 |
dialog({ height: '20em' }).show(); |
设置对话框额外的className参数。
多个className请使用空格隔开。
String
|
1 2 3 4 |
dialog({ skin: 'min-dialog tips' }).show(); |
(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距,即 style padding属性
String
|
1 2 3 4 5 |
dialog({ content: 'hello world', padding: 0 }).show(); |
(默认值: false) 开启固定定位。
固定定位是 css2.1 position的一个属性,它能固定在浏览器某个地方,也不受滚动条拖动影响。IE6 与部分移动浏览器对其支持不好,内部会转成绝对定位。
Boolean
|
1 2 3 4 5 6 |
dialog({ fixed: true, title: '消息', content: '请拖动滚动条查看' }).show(); |
(默认值: "bottom left") 设置对话框与其他元素的对齐方式。
如果show(elem)与showModal(elem)传入元素,align参数方可生效,支持如下对齐方式:
"top left""top""top right""right top""right""right bottom""bottom right""bottom""bottom left""left bottom""left""left top"String
|
1 2 3 4 5 6 7 |
var d = dialog({ align: 'left', content: 'Hello World!', quickClose: true }); d.show(document.getElementById('option-align')); |
(默认值: true) 是否支持自动聚焦。
Boolean
(默认值: false) 是否点击空白出快速关闭。
Boolean
|
1 2 3 4 5 6 |
var d = dialog({ content: '点击空白处快速关闭', quickClose: true }); d.show(document.getElementById('option-quickClose')); |
(默认值: 1024) 重置全局zIndex初始值,用来改变对话框叠加高度。
比如有时候配合外部浮动层 UI 组件,但是它们可能默认zIndex没有对话框高,导致无法浮动到对话框之上,这个时候你就可以给对话框指定一个较小的zIndex值。
请注意这是一个会影响到全局的配置,后续出现的对话框叠加高度将重新按此累加。
Number
|
1 2 3 4 |
dialog({ zIndex: 87 }).show(); |
对话框打开的事件。
回调函数this指向dialog对象。
Function
|
1 2 3 4 5 6 7 8 |
var d = dialog({ content: 'loading..', onshow: function () { this.content('dialog ready'); } }); d.show(); |
对话框关闭后执行的事件。
回调函数this指向dialog对象。
Function
|
1 2 3 4 5 6 7 8 |
var d = dialog({ onclose: function () { alert('对话框已经关闭'); }, ok: function () {} }); d.show(); |
对话框销毁之前事件。
回调函数this指向dialog对象。
Function
对话框销毁事件。
回调函数this指向dialog对象。
Function
|
1 2 3 4 5 6 7 8 9 10 11 |
var d = dialog({ onclose: function () { alert('对话框已经关闭'); }, onremove: function () { alert('对话框已经销毁'); }, ok: function () {} }); d.show(); |
对话框获取焦点事件。
回调函数this指向dialog对象。
Function
对话框失去焦点事件。
回调函数this指向dialog对象。
Function
对话框位置重置事件。
回调函数this指向dialog对象。
Function
设定对话框唯一标识。
dialog.get(id)获取某个对话框的接口。String
|
1 2 3 4 5 6 |
dialog({ id: 'id-demo', content: '再次点击运行看看' }).show(); dialog.get('id-demo').title('8888888888'); |
判断对话框是否被打开。
对话框返回值。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
var d = dialog({ title: '消息', content: '<input id="property-returnValue-demo" value="1" />', ok: function () { var value = $('#property-returnValue-demo').val(); this.close(value); this.remove(); } }); d.addEventListener('close', function () { alert(this.returnValue); }); d.show(); |
打开配置文件: src/dialog-config.js,其中cssUir字段是 css 文件的路径,innerHTML字段则是 artDialog 的模板。修改这两个字段即可很方便的设计属于自己的皮肤。
一套皮肤可以添加不同的className实现多种状态,可参考 skin 选项。
使用GruntJS在 artDialog 源码根目录执行即可。
https://github.com/aui/artDialog/wiki/artDialog-v5%E5%8D%87%E7%BA%A7v6%E5%8F%82%E8%80%83
artDialog 是基于 LGPL 协议免费开源的程序,问题反馈可在 Github issues 上进行(为了保证效率,请务必描述清楚你的问题,例如包含 artDialog 版本号、浏览器版本等必要信息,有 demo 甚佳。不合格问题将可能会被关闭)。