cordova-plugin-dialogs

Android Testsuite Chrome Testsuite iOS Testsuite Lint Test

此插件通过全局 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 (数字),它是按下按钮的索引。请注意,索引使用基于一的索引,因此值为 123 等。

示例

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: 按下按钮的索引。(数字) 请注意,索引使用基于一的索引,因此值为 123 等。

  • 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