我不知道问题出在我身上还是在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确实坏了,甚至无法正常工作。

最佳答案

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"

08-19 03:44