cordova-plugin-dialogs
此插件通过全局 navigator.notification
对象提供对一些原生对话框 UI 元素的访问。
虽然该对象附加到全局范围的 navigator
,但在 deviceready
事件发生之前不可用。
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(navigator.notification);
}
安装
cordova plugin add cordova-plugin-dialogs
方法
navigator.notification.alert
navigator.notification.confirm
navigator.notification.prompt
navigator.notification.beep
navigator.notification.dismissPrevious
navigator.notification.dismissAll
navigator.notification.alert
显示自定义警报或对话框。大多数 Cordova 实现使用原生对话框来实现此功能,但某些平台使用浏览器的 alert
函数,该函数通常可定制性较低。
navigator.notification.alert(message, alertCallback, [title], [buttonName])
-
message: 对话框消息。(字符串)
-
alertCallback: 警报对话框关闭时调用的回调。(函数)
-
title: 对话框标题。(字符串) (可选,默认为
Alert
) -
buttonName: 按钮名称。(字符串) (可选,默认为
OK
)
示例
function alertDismissed() {
// do something
}
navigator.notification.alert(
'You are the winner!', // message
alertDismissed, // callback
'Game Over', // title
'Done' // buttonName
);
支持的平台
- Android
- 浏览器
- iOS
- Windows
navigator.notification.confirm
显示可定制的确认对话框。
navigator.notification.confirm(message, confirmCallback, [title], [buttonLabels])
-
message: 对话框消息。(字符串)
-
confirmCallback: 当按下按钮(1、2 或 3)或对话框在没有按下按钮的情况下关闭时调用的回调。(函数)
-
title: 对话框标题。(字符串) (可选,默认为
Confirm
) -
buttonLabels: 指定按钮标签的字符串数组。(数组) (可选,默认为 [
OK,Cancel
])
confirmCallback
当用户按下确认对话框中的某个按钮时,confirmCallback
会执行。
回调接受参数 buttonIndex
(数字),它是按下按钮的索引。请注意,索引使用基于一的索引,因此值为 1
、2
、3
等。
示例
function onConfirm(buttonIndex) {
alert('You selected button ' + buttonIndex);
}
navigator.notification.confirm(
'You are the winner!', // message
onConfirm, // callback to invoke with index of button pressed
'Game Over', // title
['Restart','Exit'] // buttonLabels
);
支持的平台
- Android
- 浏览器
- iOS
- Windows
Android 特性
-
Android 最多支持三个按钮,并忽略超过三个的按钮。
-
Android 对话框标题不能超过两行内容,它会忽略超过两行的内容。
Windows 特性
-
在 Windows8/8.1 上,无法向 MessageDialog 实例添加超过三个按钮。
-
在 Windows Phone 8.1 上,无法显示超过两个按钮的对话框。
navigator.notification.prompt
显示比浏览器 prompt
函数更可定制的原生对话框。
navigator.notification.prompt(message, promptCallback, [title], [buttonLabels], [defaultText])
-
message: 对话框消息。(字符串)
-
promptCallback: 当按下按钮(1、2 或 3)或对话框在没有按下按钮的情况下关闭时调用的回调。(函数)
-
title: 对话框标题 (字符串) (可选,默认为
Prompt
) -
buttonLabels: 指定按钮标签的字符串数组 (数组) (可选,默认为
["OK","Cancel"]
) -
defaultText: 默认文本框输入值 (
字符串
) (可选,默认:空字符串)
promptCallback
当用户按下提示对话框中的某个按钮时,promptCallback
会执行。传递给回调的 results
对象包含以下属性
-
buttonIndex: 按下按钮的索引。(数字) 请注意,索引使用基于一的索引,因此值为
1
、2
、3
等。 -
input1: 在提示对话框中输入的文本。(字符串)
示例
function onPrompt(results) {
alert("You selected button number " + results.buttonIndex + " and entered " + results.input1);
}
navigator.notification.prompt(
'Please enter your name', // message
onPrompt, // callback to invoke
'Registration', // title
['Ok','Exit'], // buttonLabels
'Jane Doe' // defaultText
);
支持的平台
- Android
- 浏览器
- iOS
- Windows
Android 特性
-
Android 最多支持三个按钮,并忽略超过三个的按钮。
-
在 Android 3.0 及更高版本上,对于使用 Holo 主题的设备,按钮以相反的顺序显示。
Windows 特性
- 在 Windows 上,提示对话框是基于 html 的,因为缺少这样的原生 api。
navigator.notification.beep
设备播放蜂鸣声。
navigator.notification.beep(times);
- times: 重复蜂鸣声的次数。(数字)
示例
// Beep twice!
navigator.notification.beep(2);
支持的平台
- Android
- 浏览器
- iOS
- Windows 8
Android 特性
- Android 播放 设置/声音和显示 面板中指定的默认 通知铃声。
navigator.notification.dismissPrevious
关闭先前打开的对话框。如果当前没有打开对话框,则会调用 errorCallback
。
navigator.notification.dismissPrevious([successCallback], [errorCallback])
- successCallback: 当先前打开的对话框关闭时调用的回调。(函数) (可选)
- errorCallback: 当无法关闭先前打开的对话框时调用的回调。将传递错误消息。(函数) (可选)
示例
function successCallback() {
console.log("Successfully dismissed previously opened dialog.");
}
function errorCallback(error) {
console.log("Failed to dismiss previously opened dialog: " + error);
}
navigator.notification.dismissPrevious(
successCallback,
errorCallback
);
支持的平台
- Android
- iOS
navigator.notification.dismissAll
关闭所有先前打开的对话框。如果当前没有打开对话框,则会调用 errorCallback
。
navigator.notification.dismissAll([successCallback], [errorCallback])
- successCallback: 当所有先前打开的对话框关闭时调用的回调。(函数) (可选)
- errorCallback: 当无法关闭所有先前打开的对话框时调用的回调。将传递错误消息。(函数) (可选)
示例
function successCallback() {
console.log("Successfully dismissed all previously opened dialogs.");
}
function errorCallback(error) {
console.log("Failed to dismiss all previously opened dialogs: " + error);
}
navigator.notification.dismissAll(
successCallback,
errorCallback
);
支持的平台
- Android
- iOS