Options
message.js 有者丰富的配置选项,以不同的展示方式展示提示信息。
beforeClose
Description
- Type:
- Function
- Default:
- null
可选,用来指定提示信息关闭之前执行的回调函数。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
beforeClose: () => {
Message.warning({
message: 'message.js 提示窗口即将关闭'
})
},
message: '可选,beforeClose 用来指定提示信息关闭之前执行的回调函数。'
})
closable
Description
- Type:
- Boolean
- Default:
- true
可选,指定是否有关闭按钮;
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
// 提示信息界面没有关闭按钮
closable: false,
message: '可选,closable 指定是否有关闭按钮'
})
customClass
Description
- Type:
- String
- Default:
- ''
可选,如果 message.js 中自带的 UI 样式无法满足开发中的应用场景的要求可以添加 customClass 以扩展修改界面样式。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
// 设置深色样式
customClass: 'theme-dark',
message: '可选,如果 message.js 中自带的 UI 样式无法满足开发中的应用场景的要求可以添加 customClass 以扩展修改界面样式。'
})
dangerouslyUseHTMLString
Description
- Type:
- Boolean
- Default:
- false
可选,用来显示的提示信息文本是否允许有 HTML 字符串。
默认提示信息应该为普通的文本,在需要显示 HTML 字符的时候配置 dangerouslyUseHTMLString,否则 HTML 字符串将通过 encodeHTML() 方法转义 HTML 字符。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// 默认将转义 message 中的 HTML 的 < 转义为 <,> 转义为 >
const message = new Message({
message: '可选,<a href="#beforeClose">beforeClose</a> 用来指定提示信息关闭之前执行的回调函数。'
})
// message 中的 HTML 链接将可以点击
const message = new Message({
dangerouslyUseHTMLString: true,
message: '可选,<a href="#beforeClose">beforeClose</a> 用来指定提示信息关闭之前执行的回调函数。'
})
destroyAfterClosed
Description
- Type:
- Boolean
- Default:
- true
可选,用来指定提示信息关闭后,是否自动销毁。默认关闭后是自动销毁的。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
// 设置为 false,message 可以反复使用
destroyAfterClosed: false
message: '可选,<a href="#beforeClose">beforeClose</a> 用来指定提示信息关闭之前执行的回调函数。'
})
// 调整配置后,再次打开
message.open({
type: 'success',
message: '调整配置后,再次打开'
})
delay
Description
- Type:
- Number
- Default:
- 2
可选,指定鼠标离开提示信息区域后,提示信息延迟关闭的时间(单位:秒)。
提示显示展示期间,用户将鼠标光标放置于提示信息区域时,提示信息将不会自动收起关闭,delay 指定的是鼠标离开提示信息区域后,提示信息延迟关闭的时间。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
// 鼠标离开提示信息区域 4 秒后,将自动关闭
delay: 4,
message: '可选,指定鼠标离开提示信息区域后,提示信息延迟关闭的时间(单位:秒)。'
})
duration
Description
- Type:
- Number
- Default:
- 6
可选,执行提示信息展示的时间(单位:秒),设置 duration: 0,则不会自动关闭。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
// 提示信息区将在 14 秒后自动关闭
duration: 14,
message: '可选,执行提示信息展示的时间(单位:秒)。'
})
const message = new Message({
// 设置 duration: 0,则不会自动关闭
duration: 0,
message: '可选,执行提示信息展示的时间(单位:秒)。'
})
effect
Description
- Type:
- String
- Default:
- 'default'
可选,指定提示信息的 UI 效果类型。
- default:默认类型,图标深色主题色底色,图标白色;
- light: 图标没有底色,图标都有圆圈,图标颜色为主题色;
- plain:无图标纯文本模式,提示框左边框有主题色,提示框有浅色背景色;
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// 不设置 effect,则为默认 default UI 效果
const message = new Message({
message: '可选,指定提示信息的 UI 效果类型。'
})
// light UI 效果
const message = new Message({
effect: 'light',
type: 'success',
message: '可选,指定提示信息的 UI 效果类型。'
})
// plain UI 效果
const message = new Message({
effect: 'plain',
type: 'warning',
message: '可选,指定提示信息的 UI 效果类型。'
})
id
Description
- Type:
- String
- Default:
- ''
可选,指定 Message 对象实例的 id 值,可以通过 Message.close(id) 静态方法手动关闭提示信息。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
id: 'info-message-001',
message: '可选,指定 Message 对象实例的 id 值,可以通过 Message.close(id) 静态方法手动关闭提示信息。'
})
message
Description
- Type:
- String
- Default:
- ''
可选,提示信息文本字符串。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// 默认将转义 message 中的 HTML 的 < 转义为 <,> 转义为 >
const message = new Message({
message: '可选,<a href="#beforeClose">beforeClose</a> 用来指定提示信息关闭之前执行的回调函数。'
})
// message 中的 HTML 链接将可以点击
const message = new Message({
dangerouslyUseHTMLString: true,
message: '可选,<a href="#beforeClose">beforeClose</a> 用来指定提示信息关闭之前执行的回调函数。'
})
offset
Description
- Type:
- Number
- Default:
- 30
可选,用来指定提示信息距离窗口顶部的 top 数值,单位:px。
说明:如果使用 Message.info()、Message.success()、Message.warning() 和 Message.error() 4 个静态方法配置 offset 值,message.js 会自动定位多个提示框的 offset 值。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// 不设置则为默认:30
const message = new Message({
id: 'info-message-001',
message: '可选,用来指定提示信息距离窗口顶部的 top 数值。'
})
const message = new Message({
id: 'info-message-002',
offset: 40,
message: '可选,用来指定提示信息距离窗口顶部的 top 数值。'
})
round
Description
- Type:
- Boolean
- Default:
- false
可选,用来指定提示框是的边角是否以圆形展示。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// default UI 效果,并且是圆形边框
const message = new Message({
round: true,
message: '可选,指定提示信息的 UI 效果类型。'
})
// light UI 效果,并且是圆形边框
const message = new Message({
effect: 'light',
round: true,
type: 'success',
message: '可选,指定提示信息的 UI 效果类型。'
})
// plain UI 效果,并且是圆形边框
const message = new Message({
effect: 'plain',
round: true,
type: 'warning',
message: '可选,指定提示信息的 UI 效果类型。'
})
type
Description
- Type:
- String
- Default:
- 'info'
可选,指定提示信息的类型,message.js 有 4 中类型提示:
- info:普通提示信息;
- success:成功提示信息;
- warning:警告提示信息;
- error:错误提示信息;
另外,message.js 还提供了 Message.info()、Message.success()、Message.warning() 和 Message.error() 4 个静态方法,以对应的类型显示提示信息。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// default UI 效果,普通提示信息
const message = new Message({
round: true,
message: '可选,指定提示信息的 UI 效果类型。'
})
// light UI 效果,成功提示信息
const message = new Message({
effect: 'light',
round: true,
type: 'success',
message: '可选,指定提示信息的 UI 效果类型。'
})
// light UI 效果,错误提示信息
const message = new Message({
effect: 'light',
round: true,
type: 'error',
message: '可选,指定提示信息的 UI 效果类型。'
})
// plain UI 效果,警告提示信息
const message = new Message({
effect: 'plain',
round: true,
type: 'warning',
message: '可选,指定提示信息的 UI 效果类型。'
})
visible
Description
- Type:
- Boolean
- Default:
- true
可选,指定提示信息创建后是否可见,即是否立即显示。如果设置 false,则需要手动调用 open() 方法显示。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// 默认自动显示
const message = new Message({
round: true,
message: '可选,指定提示信息创建后是否可见,即是否立即显示。'
})
// 默认自动显示
const message = new Message({
round: true,
visible: false,
message: '可选,指定提示信息创建后是否可见,即是否立即显示。'
})
// 需要手动调用 open() 方法显示
message.open()
Properties
message.js 对外放 4 个重要的属性:$el、attrs、id 和 offset。另外还提供一个静态属性:DEFAULTS。
$el
Description
- Type:
- HTMLElement
$el 属性是 message.js 创建的提示信息框最外层的 DOM 元素。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
message: '$el 属性是 message.js 创建的提示信息框最外层的 DOM 元素'
})
console.log(message.$el)
// $el 的完整 DOM 结构
// <div class="mjs-message mjs-message_info mjs-message_default mjs-message_visible" style="top: 30px;">
// <i class="mjs-icon mjs-message__icon">
// <svg aria-hidden="true" class="mjs-icon__svg" style="width:16px;height:16px;">
// <use xlink:href="#mjs-icon-info"></use>
// </svg>
// </i>
// <p class="mjs-message__content">$el 属性是 message.js 创建的提示信息框最外层的 DOM 元素</p>
// <i class="mjs-icon mjs-message__close">
// <svg aria-hidden="true" class="mjs-icon__svg" style="width:18px;height:18px;">
// <use xlink:href="#mjs-icon-close"></use>
// </svg>
// </i>
// </div>
attrs
Description
- Type:
- Object
存储的是 Message 对象当前使用中的配置选项:
说明:建议使用 attr(prop) 方法来获取属性,避免直接调用属性。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// 设置默认配置项
const message = new Message(Message.DEFAULTS)
// 查看全部配置信息
// 建议实用 message.attr() 方法获取完整的配置信息
message.attrs
id
Description
- Type:
- String
Message 对象实例的 id 字符串。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
id: 'mjs-message-info'
message: '$el 属性是 message.js 创建的提示信息框最外层的 DOM 元素'
})
console.log(message.id) // => 'mjs-message-info'
offset
Description
- Type:
- Number
- Default:
- 30
指定 Message 提示信息距离浏览器窗口顶部部的 top 值。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
id: 'mjs-message-info'
// 默认值:30
offset: 50
message: '$el 属性是 message.js 创建的提示信息框最外层的 DOM 元素'
})
console.log(message.offset) // => 50
Message.DEFAULTS
Description
- Type:
- Object
静态属性,存储的是 Message 对象默认配置选项:
Message.DEFAULTS = {
id: '',
type: 'info',
effect: 'default',
round: false,
offset: 30,
duration: 6,
delay: 2,
message: '',
customClass: '',
closable: true,
visible: true,
dangerouslyUseHTMLString: false,
destroyAfterClosed: true,
beforeClose: null
}
Methods
message.js 的提供了 6 个公共方法和 4 个静态方法:
attr([prop, value])
Description
attr() 方法用来设置或者获取初始化时配置的 attrs 信息的。
Parameters
prop
- Type:
- String|HTMLElement
(可选)options 中的属性名称或者要配置的 attrs 信息。
value
- Type:
- Any
(可选)要设置的 prop 属性的值
- 不传递任何参数:返回完整的 attrs 配置信息;
- 仅传递 prop:
- String: 返回 attrs 配型信息中与 prop 对应的值;
- Object: 用来设置 attrs 配置信息;
- 同时传递 prop 和 value 参数:设置 attrs 配置信息中的某个属性值;
Returns
- Type:
- Any
配置信息 attrs 的属性值或者 Message 对象。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
type: 'success',
duration: 0,
message: 'attr() 方法用来设置或者获取初始化时配置的 attrs 信息的。'
})
outline.attr('type') // -> 'success'
outline.attr('message', '导入 Message 模块') // -> 设置 message 配置信息的值为 '导入 Message 模块'
outline.attr() // -> 返回完整配置参数 attrs 信息
close()
Description
close() 方法用于手动关闭提示信息。
Returns
- Type:
- Message
Message 对象,便于链式方法调用。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
type: 'success',
duration: 0,
message: 'close() 方法用于手动关闭提示信息。'
})
message.close()
destroy()
Description
destroy() 方法用于移除所有绘制的 DOM 节点,并移除绑定的事件处理器,同时重置所有 attrs 配置信息和重置 property 属性。
Returns
- Type:
- Message
Message 对象,便于链式方法调用。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
duration: 0,
message: '可选,执行提示信息展示的时间(单位:秒)。'
})
message.destroy()
isClosed()
Description
isClosed() 方法返回 Message 实例的 closed 属性,用于判断提示是否已关闭。
Returns
- Type:
- Boolean
是否被关闭。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
duration: 0,
message: 'isClosed() 方法返回 Message 实例的 closed 属性,用于判断提示是否已关闭。'
})
console.log(message.isClosed()) // -> false
message.close()
console.log(message.isClosed()) // -> true
open([options])
Description
open() 方法用于手动显示提示信息。
Parametersoptions
- Type:
- Object|String
- Object:请参考 API 文档中 Options 参数的说明;
- String: message.js 会将参数调整为 { message: options },直接将参数文本作为 message 输出;
Returns
- Type:
- Message
Message 对象,便于链式方法调用。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
type: 'success',
// 不会自动显示
visible: false,
duration: 0,
message: 'open() 方法用于手动显示提示信息。'
})
// 手动显示提示信息。
// 无参数
message.open()
const tip = new Message({
// 只有 destroyAfterClosed 参数为 false 时,
// 才能保留 Message 实例创建的 DOM 元素,从而
// 多次使用 open() 方法显示信息
destroyAfterClosed: false,
type: 'success',
// 不会自动显示
visible: false,
duration: 0,
message: 'open() 方法用于手动显示提示信息。'
})
// String 类型参数
tip.open('String 类型参数')
// Object 类型参数
tip.open({
// 将显示为普通类型提示信息
type: 'info',
message: 'Object 类型参数'
})
reload(options)
Description
reload() 方法是(根据新的配置信息)重启程序方法:
- 先移除所有绘制的 DOM 元素和绑定的事件处理器;
- 重新初始化程序;
Parameters
options
- Type:
- Object
(可选)初始化的配置参数。
Returns
- Type:
- Message
Message 对象,便于链式方法调用。
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
const message = new Message({
type: 'success',
// 不会自动显示
visible: false,
duration: 0,
essage: 'open() 方法用于手动显示提示信息。'
})
message.reload({
type: 'error',
// 自动显示
visible: true,
duration: 0,
message: 'reload() 方法是(根据新的配置信息)重启程序方法。'
})
$emit(topic[, data, async = true])
Description
$emit()方法用来发布订阅主题信息。
message.js 默认是采用异步方式发布的。以确保在消费者处理主题时,主题的发起者不会被阻止。 当然 $emit() 方法也支持同步主题发布。
- Category:
- Core
Parameters
topic
- Type:
- String
(必须)主题名称。
data
- Type:
- Object
(可选)消息传递的数据对象。
async
- Type:
- Boolean
- Default:
- true
(可选) 是否异步发布。默认值:true。
- 当 async 设置为 true(默认) 时,异步发布;
- 当 async 设置为 false 时,同步发布;
Returns
- Type:
- Message
Message 对象,以便实现链式调用。
const message = new Message({
message: '$emit()方法用来发布订阅主题信息。'
})
const handler = (msg) => {
console.log(msg)
}
message.$on('created', handler)
message.$on('mounted', handler)
// 异步发布
message.$emit('mounted') // -> 'ok'
// 同步发布
// 延迟10毫秒:应该看输出 ok 后输出
message.$emit('created')
$on(topic, handler)
Description
$on() 方法用来订阅主题,并给出处理器函数。
- Category:
- Core
Parameters
topic
- Type:
- String
(必须)主题名称。
handler
- Type:
- Function
((必须)主题的处理器函数。
Returns
- Type:
- String。
唯一的 token 字符串,例如:'guid-1'。
const message = new Message({
message: '$off() 用来取消订阅主题。'
})
const handler = function(attrs) {
// this 上下文指向 outline 实例
this.attr()
console.log('attrs: ', attrs)
}
message.$on('created', handler)
// 手动触发 created 事件
message.$emit('created')
$off(topic[, token])
Description
$off() 用来取消订阅主题。
- Category:
- Core
Parameters
topic
- Type:
- String
(必须)主题名称。
token
- Type:
- Function | String
(可选)订阅主题的处理器函数或者唯一 Id 值。
- 为传递 token 参数:取消指定 topic 的订阅;
- 传递 token 参数:仅删除 topic 订阅信息中与 token 对应的事件处理器
Returns
- Type:
- Message
Message 对象,以便实现链式调用。
const message = new Message({
message: '$off() 用来取消订阅主题。'
})
const handler = (msg) => {
console.log('handler:', msg)
}
message.$on('created')
// 取消订阅 author 主题
message.$off('created')
// 不会有任何反应,因为已经取消订阅了
message.$emit('created')
Message.info(options)
Description
(静态方法)Message.info() 方法专门用来显示普通类型提示信息。
Parameters
options
- Type:
- Object|String
- Object:请参考 API 文档中 Options 参数的说明;
- String: message.js 会将参数调整为 { message: options },直接将参数文本作为 message 输出;
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// Object 类型参数
Message.info({
round: true,
message: 'Message.info() 方法专门用来显示普通类型提示信息。'
})
// String 类型参数
Message.error('Message.info() 方法专门用来显示普通类型提示信息。')
Message.warning(options)
Description
(静态方法)Message.warning() 方法专门用来显示警告类型提示信息。
Parameters
options
- Type:
- Object|String
- Object:请参考 API 文档中 Options 参数的说明;
- String: message.js 会将参数调整为 { message: options },直接将参数文本作为 message 输出;
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// Object 类型参数
Message.warning({
round: true,
message: 'Message.warning() 方法专门用来显示警告类型提示信息。'
})
// String 类型参数
Message.warning('Message.warning() 方法专门用来显示警告类型提示信息。')
Message.success(options)
Description
(静态方法)Message.success() 方法专门用来显示成功类型提示信息。
Parameters
options
- Type:
- Object|String
- Object:请参考 API 文档中 Options 参数的说明;
- String: message.js 会将参数调整为 { message: options },直接将参数文本作为 message 输出;
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// Object 类型参数
Message.success({
round: true,
message: 'Message.success() 方法专门用来显示成功类型提示信息。'
})
// String 类型参数
Message.success('Message.success() 方法专门用来显示成功类型提示信息。')
Message.error(options)
Description
(静态方法)Message.error() 方法专门用来显示错误类型提示信息。
Parameters
options
- Type:
- Object|String
- Object:请参考 API 文档中 Options 参数的说明;
- String: message.js 会将参数调整为 { message: options },直接将参数文本作为 message 输出;
// 导入 Message 模块
import Message from '@yaohaixiao/message.js/message'
// Object 类型参数
Message.error({
round: true,
message: 'Message.error() 方法专门用来显示错误类型提示信息。'
})
// String 类型参数
Message.error('Message.error() 方法专门用来显示错误类型提示信息。')
Events
message.js 从 0.3.0 开始提供了 9 事件。通过 message.js 在 0.3.0 新添加的 $on() 方法监听。
created
事件名称 | 说明 | 回调参数 |
---|---|---|
created | Message 实例配置信息初始化完成后触发,此时 DOM 元素还没有绘制。 | 返回实例最终的 attrs 配置属性的(对象)值。 |
Usage
const message = new Message()
message.$on('created', function(attrs) {
// this 上下文就是 outline 实例
// attrs === outline.attr()
})
// 当 message 实例的配置信息初始化完毕,就会触发 created 事件
message.initialize(Message.DEFAULTS)
mounted
事件名称 | 说明 | 回调参数 |
---|---|---|
mounted | Message 实例的所有 DOM 元素绘制完毕后触发。 | -- |
Usage
const message = new Message()
message.$on('mounted', function() {
// do something
})
// 当 message 实例的所有 DOM 绘制完毕,就会触发 mounted 事件
message.initialize(Outline.DEFAULTS)
beforeOpen
事件名称 | 说明 | 回调参数 |
---|---|---|
beforeOpen | Message 实例显示前事件,在调用 Message 对象的实例 open() 方法后会触发。 | -- |
Usage
const message = new Message(Message.DEFAULTS)
outline.$on('beforeOpen', function() {
// this 上下文就是 message 实例
console.log('this', this)
})
opened
事件名称 | 说明 | 回调参数 |
---|---|---|
opened | Message 实例显示后事件,在调用 Message 对象的实例 open() 方法后会触发。 | -- |
Usage
const message = new Message(Message.DEFAULTS)
outline.$on('opened', function() {
// this 上下文就是 message 实例
console.log('this', this)
})
beforeOpen
事件名称 | 说明 | 回调参数 |
---|---|---|
beforeOpen | Message 实例显示前事件,在调用 Message 对象的实例 open() 方法后会触发。 | -- |
Usage
const message = new Message(Message.DEFAULTS)
outline.$on('beforeOpen', function() {
// this 上下文就是 message 实例
console.log('this', this)
})
opened
事件名称 | 说明 | 回调参数 |
---|---|---|
opened | Message 实例显示后事件,在调用 Message 对象的实例 open() 方法后会触发。 | -- |
Usage
const message = new Message(Message.DEFAULTS)
outline.$on('opened', function() {
// this 上下文就是 message 实例
console.log('this', this)
})
closed
事件名称 | 说明 | 回调参数 |
---|---|---|
closed | Message 实例显示后事件,在调用 Message 对象的实例 close() 方法后会触发。 | -- |
Usage
const message = new Message(Message.DEFAULTS)
outline.$on('closed', function() {
// this 上下文就是 message 实例
console.log('this', this)
})
beforeDestroy
事件名称 | 说明 | 回调参数 |
---|---|---|
beforeDestroy | Message 实例销毁前事件,在调用 Message 对象的实例 destroy() 方法后会触发。 | -- |
Usage
const message = new Message(Message.DEFAULTS)
message.$on('beforeDestroy', function() {
// this 上下文就是 message 实例
console.log('this', this)
})
message.destroy()
destroyed
事件名称 | 说明 | 回调参数 |
---|---|---|
destroyed | Message 实例销毁后事件,在调用 Message 对象的实例 destroy() 方法后会触发。 | -- |
Usage
const message = new Message(Message.DEFAULTS)
message.$on('destroyed', function() {
// this 上下文就是 message 实例
console.log('this', this)
})
message.destroy()