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)时或者对话框在没有按下按钮的情况下关闭时要调用的回调(0)。(函数)
-
title: 对话框标题。(字符串)(可选,默认为
Confirm
) -
buttonLabels: 指定按钮标签的字符串数组。(数组)(可选,默认为 [
OK,Cancel
])
confirmCallback
当用户按下确认对话框中的一个按钮时,执行 confirmCallback
。
回调接受参数 buttonIndex
(数字),它是按下按钮的索引。 请注意,索引使用从 1 开始的索引,因此该值为 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 对话框标题不能超过 2 行内容,否则将忽略。
Windows 特性
-
在 Windows 8/8.1 上,不可能向 MessageDialog 实例添加三个以上的按钮。
-
在 Windows Phone 8.1 上,不可能显示带有两个以上按钮的对话框。
navigator.notification.prompt
显示一个比浏览器的 prompt
函数更可自定义的原生对话框。
navigator.notification.prompt(message, promptCallback, [title], [buttonLabels], [defaultText])
-
message: 对话框消息。(字符串)
-
promptCallback: 按下按钮的索引(1、2 或 3)时或者对话框在没有按下按钮的情况下关闭时要调用的回调(0)。(函数)
-
title: 对话框标题。(字符串)(可选,默认为
Prompt
) -
buttonLabels: 指定按钮标签的字符串数组。(数组)(可选,默认为
["OK","Cancel"]
) -
defaultText: 默认文本框输入值 (
String
) (可选, 默认: 空字符串)
promptCallback
当用户按下提示对话框中的一个按钮时,执行 promptCallback
。 传递给回调的 results
对象包含以下属性
-
buttonIndex: 按下按钮的索引。(数字) 请注意,索引使用从 1 开始的索引,因此该值为
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 上,由于缺少此类原生 api,提示对话框是基于 html 的。
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