将AppleScript if-clause转换为其等效的JavaScript

时间:2016-06-01 22:21:41

标签: javascript applescript osascript

我不知道问题出在我身上还是OS X。 我有这个AppleScript:

tell application "Caffeine"
    if active then
        turn off
    else
        turn on
    end if
end tell

我将此翻译为此JavaScript

caffeine = Application("Caffeine");
if (caffeine.active)
{
    caffeine.turnOff();
}
else
{
    caffeine.turnOn();
}

然而caffeine.turnOn();永远不会执行,无论我多久运行一次。如果咖啡因处于活动状态,则会关闭,否则无效。 AppleScript等效运行。 caffeine.turnOn();caffeine.turnOff();本身也运行良好。我无法想象,OSA的JavaScript真的被打破了,即使这样也行不通。

1 个答案:

答案 0 :(得分:1)

caffeine.active可能是一个函数,当调用时,它将永远是真的:

var my_fn = function() {};
if (my_fn) console.log('my_fn is truly');

调用该函数:

var caffeine = Application("Caffeine");
if (caffeine.active()) {
    caffeine.turnOff();
}
else {
    caffeine.turnOn();
}

检查它的方法是简单地记录值:

console.log(caffeine.active); // function() { .... }
// or using typeof
console.log(typeof caffeine.active); // "function"