const CONFIRM_RESULT_YES = 0;
const CONFIRM_RESULT_NO = 1;
const CONFIRM_RESULT_CANCEL = -1;
/**
* JavaScript の window.confirm() のように振る舞う。
* @param {string} msg ユーザに表示するメッセージ内容。'\n' で改行できます。
* @param {string} yesButton Yes の意味となるボタン名称(既定は "Yes")。
* @param {string} defaultBtn No の意味となるボタン名称(既定はなし)。
* @param {string} noButton デフォルトにしたいボタン名(既定は Yes ボタン)。
* @param {string} cancelButton キャンセルボタンにしたいボタン名(既定はなし)。
* @returns 0: Yes、1: No、-1: Cancel
*/
function confirm(msg,
yesButton = "Yes",
noButton = null,
cancelButton = null,
defaultBtn = null) {
let app = Application.currentApplication();
app.includeStandardAdditions = true;
let params = {};
let buttons = [yesButton];
if (defaultBtn === null) {
defaultBtn = yesButton;
}
if (noButton !== null && noButton !== "") {
buttons.push(noButton);
}
if (cancelButton !== null && cancelButton !== "") {
if (!buttons.includes(cancelButton)) {
buttons.push(cancelButton);
}
params.cancelButton = cancelButton;
}
params.buttons = buttons;
if (buttons.includes(defaultBtn)) {
params.defaultButton = defaultBtn;
}
let result = {};
try {
result = app.displayAlert(msg, params);
} catch (e) {
if (e.errorNumber === -128) {
return CONFIRM_RESULT_CANCEL;
}
throw e;
}
if (result.buttonReturned === yesButton) {
return CONFIRM_RESULT_YES;
}
else {
return CONFIRM_RESULT_NO;
}
}
confirm("続行しますか?", "Yes", "No", "No");
More than 1 year has passed since last update.
JXA(JavaScript で書いた AppleScript)で window.confirm(); を使いたい
Posted at
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme