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 相關注意事項

  • 在 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)或在沒有按下按鈕就關閉對話框時 (0) 要呼叫的回呼函式。 (函式)

  • title: 對話框標題 (字串) (選用,預設為 Prompt)

  • buttonLabels: 指定按鈕標籤的字串陣列 (陣列) (選用,預設為 ["OK","Cancel"])

  • defaultText: 預設文字方塊輸入值 (字串) (選用,預設值:空字串)

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 相關注意事項

  • 由於缺少此原生 API,在 Windows 上提示對話框是基於 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