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)时或者对话框在没有按下按钮的情况下关闭时要调用的回调(0)。(函数)

  • title: 对话框标题。(字符串)(可选,默认为 Confirm

  • buttonLabels: 指定按钮标签的字符串数组。(数组)(可选,默认为 [OK,Cancel])

confirmCallback

当用户按下确认对话框中的一个按钮时,执行 confirmCallback

回调接受参数 buttonIndex (数字),它是按下按钮的索引。 请注意,索引使用从 1 开始的索引,因此该值为 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 对话框标题不能超过 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 开始的索引,因此该值为 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 上,由于缺少此类原生 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